HTTPユーティリティ—Werkzeugのドキュメント

提供:Dev Guides
Werkzeug/docs/1.0.x/http
移動先:案内検索

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を使用することをお勧めします。