ここで一つ疑問。
HTTP の Request Body は標準入力から取得できるとのことだけれど、HTTP の Request Header はどうやって取得するのだろう?
複数の python スクリプトに対応させる
その前に、現状 HTTP Request が helloworld.py にしかハンドリングされないので、
/py/(script name) で (script name).py が呼び出されるように app.yaml を変更してみる。
- app.yaml
application: helloworld version: 1 runtime: python api_version: 1 handlers: - url: /py/(.*) script: \1.py
http://localhost:8080/py/helloworld でアクセスして、Hello, World! が表示されたからよいみたい。
疑問の解決に必要な知識
CGI 標準では、HTTP_ で始まる環境変数に設定されているはずなので、HTTP_ で始まる環境変数の内容を表示してみる。
- (studyinghttp.net) The Common Gateway Interface (CGI) Version 1.1
→ http://www.studyinghttp.net/cgi-bin/rfc.cgi?3875 - (python.jp) 6.1.1 プロセスのパラメタ
→ http://www.python.jp/doc/2.4/lib/os-procinfo.html
HTTP_ で始まる環境変数を表示する
- http_.py
import os print 'Content-Type: text/plain' print '' for key, val in os.environ.iteritems(): if (key[0:5]=="HTTP_"): print key+": "+val
"http://localhost:8080/py/http_" でアクセスしてみると……
- http://localhost:8080/py/http_
HTTP_ACCEPT_CHARSET: Shift_JIS,utf-8;q=0.7,*;q=0.7 HTTP_USER_AGENT: Mozilla/5.0 (Windows NT 5.1; rv:6.0.2) Gecko/20100101 Firefox/6.0.2 HTTP_CONNECTION: keep-alive HTTP_HOST: localhost:8080 HTTP_CACHE_CONTROL: max-age=0 HTTP_ACCEPT: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 HTTP_ACCEPT_LANGUAGE: ja,en-us;q=0.7,en;q=0.3
……うまくいった。