18.4.2 wsgiref.headers - WSGI レスポンスヘッダツール群

このモジュールは単一のクラス、Headers を提供し、WSGI レスポンスヘッダの 操作をマップに似たインターフェースで便利にします。

クラス Headers( headers)
headers をラップするマップに似たオブジェクトを生成します。これは PEP 333 に定義されるようなヘッダの名前/値のタプルのリストです。 新しい Headers オブジェクトに与えられた変更は、一緒に作成された headers リストを直接更新します。

Headers オブジェクトは典型的なマッピング操作をサポートし、これには __getitem__get__setitem__setdefault__delitem____contains__has_key を含みます。これらメソッドのそれぞれにおいて、キーは ヘッダ名で(大文字小文字は区別しません)、値はそのヘッダ名に関連づけられた 最初の値です。ヘッダを設定すると既存のヘッダ値は削除され、ラップされた ヘッダのリストの末尾に新しい値が加えられます。既存のヘッダの順番は 一般的に整えられていて、ラップされたリストの最後に新しいヘッダが追加されます。

辞書とは違って、Headers オブジェクトはラップされたヘッダリストに 存在しないキーを取得または削除しようとした場合にもエラーを発生しません。 単に、存在しないヘッダの取得は None を返し、存在しないヘッダの削除は 何もしません。

Headers オブジェクトは keys()values()items() メソッドもサポートします。keys()items() で 返されるリストは、同じキーを一回以上含むことがあり、これは複数の値を持つヘッダの場合です。 Header オブジェクトの len() は、その items() の長さと同じであり、 ラップされたヘッダリストの長さと同じです。事実、items() メソッドは 単にラップされたヘッダリストのコピーを返しているだけです。

Headers オブジェクトに対して str() を呼ぶと、HTTP レスポンスヘッダとして 送信するのに適した形に整形された文字列を返します。それぞれのヘッダはコロンとスペースで 区切られた値と共に一列に並んでいます。 それぞれの行はキャリッジリターンとラインフィードで終了し、文字列は空行で終了しています。

これらのマッピングインターフェースと整形機能に加えて、Headers オブジェクトは 複数の値を持つヘッダの取得と追加、MIME パラメタでヘッダを追加するための 以下のようなメソッド群も持っています:

get_all( name)
指定されたヘッダの全ての値のリストを返します。

返されるリストは、元々のヘッダリストに現れる順、またはこのインスタンスに 追加された順に並んでいて、複製を含む場合があります。削除されて加えられた フィールドは全てヘッダリストの末尾に付きます。ある名前のフィールドが何もなければ、 空のリストが返ります。

add_header( name, value, **_params)
ヘッダ(複数の値かもしれません)を、キーワード引数を通じて指定する オプションの MIME パラメタと共に追加します。

name は追加するヘッダフィールドです。このヘッダフィールドに MIME パラメタを 設定するためにキーワード引数を使うことができます。それぞれのパラメタは文字列か None で なければいけません。パラメタ中のアンダースコアはダッシュに変換されます、これはダッシュが Python の識別子としては不正なのですが、多くの MIME パラメタはダッシュを含むためです。 パラメタ値が文字列の場合、これはヘッダ値のパラメタに name="value" の形で追加されます。 これがもし None の場合、パラメタ名だけが追加されます。(これは値なしの MIME パラメタの 場合に使われます。)使い方の例は:

h.add_header('content-disposition', 'attachment', filename='bud.gif')

上記はこのようなヘッダを追加します:

Content-Disposition: attachment; filename="bud.gif"

ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。