11.17 SimpleHTTPServer -- 簡潔な HTTP リクエストハンドラ

SimpleHTTPServer モジュールはリクエストハンドラ (request-handler) クラスを定義しています。インタフェースは BaseHTTPServer.BaseHTTPRequestHandler と互換で、 基底ディレクトリにあるファイルだけを提供します。

SimpleHTTPServer モジュールでは以下のクラスを定義しています:

class SimpleHTTPRequestHandler( request, client_address, server)
このクラスは、現在のディレクトリ以下にあるファイルを、HTTP リクエストにおけるディレクトリ構造に直接対応付けて提供するために 利用されます。

リクエストの解釈のような、多くの作業は基底クラス BaseHTTPServer.BaseHTTPRequestHandler で行われます。 このクラスは関数 do_GET() および do_HEAD() を実装しています。

SimpleHTTPRequestHandler では以下のメンバ変数を定義しています:

server_version
この値は "SimpleHTTP/" + __version__ になります。 __version__ はこのモジュールで定義されている値です。

extensions_map
拡張子を MIME 型指定子に対応付ける辞書です。標準の型指定は空文字列で 表され、この値は text/plain と見なされます。 対応付けは大小文字の区別をするので、小文字のキーのみを入れるべきです。

SimpleHTTPRequestHandler では以下のメソッドを定義しています:

do_HEAD( )
このメソッドは 'HEAD' 型のリクエスト処理を実行します: すなわち、 GET リクエストの時に送信されるものと同じヘッダを送信します。 送信される可能性のあるヘッダについての完全な説明は do_GET() メソッドを参照してください。

do_GET( )
リクエストを現在の作業ディレクトリからの相対的なパスとして解釈することで、 リクエストをローカルシステム上のファイルと対応付けます。

リクエストがディレクトリに対応付けられた場合、 出力は 403 応答 であり、その後に説明 'Directory listing not supported' が 続きます。 要求されたファイルを開く際に何らかの IOError 例外が 送出された場合、リクエストは 404'File not found' エラーに対応づけられます。そうでない場合、コンテントタイプが extensions_map 変数を用いて推測されます。

出力は 'Content-type:' と推測されたコンテントタイプで、その 後にヘッダの終了を示す空白行が続き、さらにその後にファイルの内容が 続きます。このファイルは常にバイナリモードで開かれます。

使用例については関数 test() の実装を参照してください。

参考資料:

BaseHTTPServerモジュール:
Web サーバおよび要求ハンドラの基底クラス実装。.
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。