WSGIヘルパー—Werkzeugドキュメント

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

WSGIヘルパー

次のクラスと関数は、WSGI仕様の操作を容易にしたり、WSGIレイヤーで操作したりできるように設計されています。 このモジュールのすべての機能は、高レベルの要求/応答オブジェクトで利用できます。

イテレータ/ストリームヘルパー

これらのクラスと関数は、WSGIアプリケーションイテレーターと入力ストリームの操作を簡素化します。


環境ヘルパー

これらの関数はWSGI環境で動作します。 それらは有用な情報を抽出するか、一般的な操作を実行します。


コンビニエンスヘルパー

バイト、文字列、およびエンコーディング

HTTPリクエストの値は、ASCIIを表す(またはエンコードされた)バイトとして入力されます。 WSGI仕様( PEP 3333 )は、値を表すために常にstrタイプを使用することを決定しました。 これを実現するために、生のバイトはISO-8859-1文字セットを使用してデコードされ、文字列が生成されます。

WSGI環境の文字列は、ISO-8859-1コードポイントに制限されています。 環境から読み取られた文字列にその文字セット以外の文字が含まれている可能性がある場合は、最初にISO-8859-1としてバイトにデコードしてから、適切な文字セット(通常はUTF-8)を使用して文字列にエンコードする必要があります。 環境に書き込むときは、その逆が行われます。 これは「WSGIエンコーディングダンス」として知られています。

Werkzeugは、これを自動的に処理する関数を提供しているため、内部の動作を意識する必要はありません。 このページの関数とEnvironHeaders()を使用して、WSGI環境からデータを読み取ります。

アプリケーションは、適切なエンコードまたはデコードの手順を実行しない限り、WSGI環境を手動で作成または変更することは避けてください。 Werkzeugのすべての高レベルインターフェイスは、必要に応じてエンコードとデコードを適用します。


生のリクエストURIとパスエンコーディング

環境内のPATH_INFOは、パーセントデコード後のパス値です。 たとえば、生のパス/hello%2fworldは、WSGIサーバーからWerkzeugへの/hello/worldとして表示されます。 これにより、スラッシュがパス区切り文字ではなく生の文字であるという情報が失われます。

WSGI仕様( PEP 3333 )は元の値を取得する方法を提供していないため、パス内の一部のタイプのデータをルーティングすることはできません。 これを回避する最も互換性のある方法は、パスではなくクエリ文字列で問題のあるデータを送信することです。

ただし、多くのWSGIサーバーは、rawパスに非標準の環境キーを追加します。 この動作に一致させるために、Werkzeugのテストクライアントと開発サーバーは、REQUEST_URIキーとRAW_URIキーの両方に生の値を追加します。 この値に基づいてルーティングする場合は、ミドルウェアを使用して、アプリケーションに到達する前に環境内のPATH_INFOを置き換えることができます。 ただし、これらのキーは非標準であり、存在することが保証されていないことに注意してください。