| On this page |
Note
このクラスは、hwebserver.WebServerRequestとhwebserver.Requestのどちらを使ってもアクセス可能ですが、hwebserver.Requestの方が望ましいです。
このオブジェクトは、クライアントリクエストからの情報のコンテナとして登録済みのURLハンドラー関数に渡されます。
-
URL引数の辞書を取得するには、
request.GET()をコールします。 -
(POSTリクエストで)form引数の辞書を取得するには、
request.POST()をコールします。 -
リクエストのフルパスを取得するには、
request.path()をコールします。 -
リクエストがファイルアップロードの場合、
request.files()を使用することで、ファイル名とファイルの内容がマッピングされた辞書を取得することができます。
アップロードのサンプル ¶
import tempfile import hwebserver import hou @hwebserver.urlHandler("/blur_image") def blur_image(request): if request.method() == "GET": return hwebserver.Response(''' <p>Upload an image</p> <form method="POST" enctype="multipart/form-data"> <input type="file" name="image_file"> <input type="submit"> </form> ''') if request.method() != "POST": return hwebserver.notFoundResponse(request) image_file = request.files().get("image_file") if image_file is None: return hwebserver.errorResponse(request, "No image was posted", 422) image_file.saveToDisk() # COP2ネットワークを使用して画像を読み込んで、それにブラーをかけて、 # それを一時出力ファイルに書き出します。 cop2net = hou.node("/img").createNode("img") file_cop2 = cop2net.createNode("file") file_cop2.parm("filename1").set(image_file.temporaryFilePath()) blur_cop2 = cop2net.createNode("blur") blur_cop2.setFirstInput(file_cop2 blur_cop2.parm("blursize").set(10) rop = cop2net.createNode("rop_comp") rop.setFirstInput(blur_cop2) rop.parmTuple("f").set((1, 1, 1)) temp_output_file = tempfile.mkstemp(".jpg")[1] rop.parm("copoutput").set(temp_output_file) rop.render() cop2net.destroy() return hwebserver.fileResponse(temp_output_file, delete_file=True) hwebserver.run(8008, True)
メソッド ¶
method()
→ str
リクエストで使用されているHTTPメソッド("GET", "POST", "PATCH"など)を返します。
path()
→ str
サーバーにリクエストされたパスを返します。
例えば、URIが"http://127.0.0.1:8008/asset/torus?divisions=20&tx=2"なら、
そのパスは"/asset/torus"となります。
pathWithQueryString()
→ str
サーバーにリクエストされたパス(クエリ文字列部分を含む)を返します。
例えば、URIが"http://127.0.0.1:8008/asset/torus?divisions=20&tx=2"なら、
その結果は"/asset/torus?divisions=20&tx=2"となります。
Note
このサンプル内のクエリ文字列の内容は、request.GET()["divisions"]とrequest.GET()["tx"]からでもアクセス可能です。
queryString()
→ str
リクエスト内のクエリ文字列(先頭の?を含みません)を返します。
例えば、URIが"http://127.0.0.1:8008/asset/torus?divisions=20&tx=2"なら、
その結果は"divisions=20&tx=2"となります。
URIが"http://127.0.0.1:8008/asset/torus"なら、その結果は""となります。
absoluteURI(location=None)
→ str
locationがNoneの場合、現在のリクエストを送信する際に使用されるフルURIを返します。
それ以外の場合、locationにサーバー上のパスを含んだ文字列を指定すると、そのパスのフルURIを返します。
このメソッドは、hwebserver.redirectのLocationヘッダを構築する際に使用されます。
isSecure()
→ bool
httpの代わりにhttpsを使用してリクエストが送信された場合はTrueを返します。
headers()
→ dict
of str
to str
リクエストに用意されているヘッダの辞書を返します。
このメソッドをコールする度に、辞書の新しいコピーが生成されるので、 必要以上にこれをコールしないことを推奨します。
Note
クッキーはCookieヘッダの内容を解析します。
ウェブサーバーには認証サポートが備わっていませんが、例えば、Authorizationヘッダの内容を検査するデコレータを作成することで、
認証を追加することができます。
cookies()
→ dict
of str
to str
リクエストに送信されたCookieヘッダから解析されたクッキーデータを返します。
このメソッドをコールする度に、辞書の新しいコピーが生成されるので、 必要以上にこれをコールしないことを推奨します。
GET()
→ dict
of str
to str
リクエストのURLで指定された解析されたクエリ文字列変数の辞書を返します。
このメソッドをコールする度に、辞書の新しいコピーが生成されるので、 必要以上にこれをコールしないことを推奨します。
同じキーを持つ複数のGET値に対応する必要がある場合、Pythonのparse_qs関数を使用することで、
クエリ文字列を解析して、複数のGET値を抽出することができます。
try: from urllib.parse import parse_qs except Importerror: from urlparse import parse_qs `parse_qs(request.queryString())`
POST()
→ dict
of str
to str
リクエストのボディで指定された解析されたクエリ変数の辞書を返します。 サーバーは、URLエンコードされてmultipart/form-dataエンコードされた値を受信することができます。
このメソッドをコールする度に、辞書の新しいコピーが生成されるので、 必要以上にこれをコールしないことを推奨します。
Note
multipart/form-dataのファイルは、この辞書には表示されず、 代わりにfilesを介してアクセス可能です。
files()
→ dict
of str
to hwebserver.UploadedFile
multipart/form-dataで渡されたファイルアップロードの辞書を返します。 それらのファイルアップロードのサイズが大きい場合、メモリに保存せずにディスクに保存されている場合があります。 詳細は、hwebserver.UploadedFileを参照してください。
このメソッドをコールする度に、辞書の新しいコピーが生成されるので、 必要以上にこれをコールしないことを推奨します。
port()
→ int
リクエストの送信元のサーバーポートを返します。
body()
→ str
リクエストの完全に解析されていないボディを返します。
このメソッドをコールする度に、文字列の新しいコピーが生成されるので、 必要以上にこれをコールしないことを推奨します。
contentLength()
→ str
Content-Lengthヘッダの内容を返します。 内容がない場合は空っぽの文字列が返されます。 これは、ヘッダを直接通すための便利メソッドとして用意されています。
contentType()
→ str
Content-Typeヘッダを返します。 内容がない場合は空っぽの文字列が返されます。 これは、ヘッダを直接通すための便利メソッドとして用意されています。
host()
→ str
リクエストのHostヘッダで見つかったホスト名を返します。 何も見つからなければ、空っぽの文字列が返されます。
protocol()
→ str
リクエストで使用されているプロトコルを返します。
例えば、http1.1リクエストならHTTP/1.1が返されます。