2016-05-11 21 views
0

私はPythonプログラマではありませんが、SimpleHTTPServerを使用しているので、1つのフォルダからWebサーバを起動するのが簡単です。複数のハンドラを追加するSimpleHTTPServer

今、私はjsonファイルを提供する必要があります。私は次のpythonを持っています:

更新:ファイルは別のルートから提供されるべきです。つまり、私はindex.htmlを提供する "localhost"フォルダとjsonファイルを提供するフォルダの両方が必要です。

import BaseHTTPServer, SimpleHTTPServer 
import ssl 

httpd = BaseHTTPServer.HTTPServer(('localhost', 4443), SimpleHTTPServer.update: I should mention that the) 
httpd.socket = ssl.wrap_socket (httpd.socket, certfile='Certificates.pem', server_side=True) 
httpd.serve_forever() 

私は、ファイルを提供する1つの以上のハンドラを追加する必要があることを知っているが、どのように複数のハンドラを持つことができます。

ファイルを提供するための要件は次のとおりです。
1.これは、ヘッダーと一緒に送信されなければならない「アプリケーション/ PKCS7-パントマイム」
2.これは、200 HTTPコードを返す必要があり

質問はどのようにありますサーバーの複数のハンドラー。前もって感謝します。 よろしくお願いします。

+0

、それはおそらく、使いやすいです。 –

答えて

1

複数のハンドラは必要ありません。 SimpleHTTPRequestHandlerは、ファイルの拡張子を使用して、Content-typeヘッダーに適切なMIMEタイプを推測します。

この場合、拡張子は

拡張子.p7mを使用してJSONファイルに名前を付けるのであれば、必要なMIMEタイプが使用されますapplication/pkcs7-mime

から.p7mマップ。それが不可能な場合は、あなたがSimpleHTTPServer.SimpleHTTPRequestHandler.extensions_mapを変更し、application/pkcs7-mimeにマップするために独自の拡張機能を追加することができます

import BaseHTTPServer, SimpleHTTPServer 
import ssl 

SimpleHTTPServer.SimpleHTTPRequestHandler.extensions_map['.my_ext'] = 'application/pkcs7-mime' 
httpd = BaseHTTPServer.HTTPServer(('localhost', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler) 
httpd.socket = ssl.wrap_socket (httpd.socket, certfile='Certificates.pem', server_side=True) 
httpd.serve_forever() 

今拡張子.my_extのファイルが必要なMIMEタイプで提供されます。

をサブクラス化し、そのguess_type()メソッドをオーバーライドして、ファイルの内容を検査することによってMIMEタイプを判別するカスタム方法を追加することができます。

0

オペレーティングシステムのシンボリックリンク(シンボリックリンク)機能を使用して、index.htmlとJSONファイルの両方を1つのディレクトリにリンクすることができます。 UNIXシステムでは

、それはこのように書きます:私はフラスコを使用することをお勧め

$ ln -s /path/to/index.html 

$ ln -s /another/path/to/file.json 

$ ls 
file.json index.html 

$ python /your/script.py 
関連する問題