HTTPユーティリティ—Werkzeugのドキュメント
HTTPユーティリティ
Werkzeugは、WSGIミドルウェアを実装するとき、または下位レベルのレイヤーで操作するときに役立つHTTPヘッダーを解析および生成するためのいくつかの関数を提供します。 このすべての機能は、要求オブジェクトと応答オブジェクトからも公開されます。
日付関数
次の関数は、HTTPコンテキストでの時間の操作を簡素化します。 Werkzeugは、UTCで時刻を格納するオフセットナイーブdatetime
オブジェクトを内部的に使用します。 アプリケーションでタイムゾーンを使用している場合は、値を処理する前に、tzinfo属性をUTCタイムゾーン情報に置き換えてください。
ヘッダーの解析
次の関数を使用して、着信HTTPヘッダーを解析できます。 Pythonは RFC 2616 で必要なセマンティクスを備えたデータ構造を提供しないため、Werkzeugは個別に文書化されたいくつかのカスタムデータ構造を実装します。
ヘッダーユーティリティ
次のユーティリティはHTTPヘッダーを適切に処理しますが、それらを解析しません。 これらは、条件付き応答を処理している場合、または任意の要求をプロキシしたいが、WSGIでサポートされていないホップバイホップヘッダーを削除したい場合に役立ちます。 また、解析したデータからHTTPヘッダー文字列を作成する機能もあります。
条件付き応答ヘルパー
条件付き応答の場合、次の関数が役立つ場合があります。
定数
- werkzeug.http.HTTP_STATUS_CODES
- ステータスコードの辞書->デフォルトのステータスメッセージペア。 これは、Werkzeug全体で整数ステータスコードが文字列に展開されるラッパーやその他の場所で使用されます。
フォームデータの解析
Werkzeugは、リクエストオブジェクトとは別にフォーム解析機能を提供しているため、プレーンなWSGI環境からフォームデータにアクセスできます。
現在、フォームデータパーサーでは次の形式がサポートされています。
- application / x-www-form-urlencoded
- マルチパート/フォームデータ
ネストされたマルチパートは現在サポートされていませんが(Werkzeug 0.9)、最新のWebブラウザーでは使用されていません。
使用例:
>>> from cStringIO import StringIO
>>> data = '--foo\r\nContent-Disposition: form-data; name="test"\r\n' \
... '\r\nHello World!\r\n--foo--'
>>> environ = {'wsgi.input': StringIO(data), 'CONTENT_LENGTH': str(len(data)),
... 'CONTENT_TYPE': 'multipart/form-data; boundary=foo',
... 'REQUEST_METHOD': 'POST'}
>>> stream, form, files = parse_form_data(environ)
>>> stream.read()
''
>>> form['test']
u'Hello World!'
>>> not files
True
通常、WSGI環境は、WSGIゲートウェイによって、受信データをその一部として提供されます。 ユニットテスト用にこのような偽のWSGI環境を生成する場合は、代わりにcreate_environ()
関数またはEnvironBuilder
を使用することをお勧めします。