Clack

Revenge of Lisp in Web

Chapter 4: 引数ENVの中身

English | 日本語

この章では、アプリケーションの引数envの中身についてもう少し説明します。たとえば、ローカルのサーバの http://localhost:4242/sns/member?id=3 のようなURLにアクセスしたとき、envの中身は以下のようになっています。

(:request-method :GET
 :script-name ""
 :path-info "/sns/member"
 :query-string "id=3"
 :server-name "localhost"
 :server-port 4242
 :request-uri "/sns/member?id=3"
 :server-protocol :HTTP/1.1
 :http-user-agent "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) ..."
 :remote-addr "127.0.0.1"
 :remote-port 26077
 :http-referer nil
 :http-host "localhost:4242"
 :http-cookies nil)

そして、以下が各値の説明です。ほとんどの場合これらすべてを暗記する必要はありません (もしClack Handlerを作ろうとしているのでない限りは)。あまり気張らず情報程度に考えてください。


:request-method (必須, キーワード)
HTTPリクエストメソッドです。:GET:HEAD:OPTIONS:PUT:POST:DELETEのいずれか1つが入っています。
:script-name (必須, 文字列)
リクエストURLパスの最初の部分です。アプリケーションのサーバルート(/)のときは空文字列が入ります。空でないときは必ずスラッシュ(/)で始まる文字列です。
:path-info (必須, 文字列)
リクエストURLパスの残りの部分です。アプリケーションルートのときは空文字列になります。
:query-string (任意, 文字列)
リクエストURLの?以下の部分です。このキーは空の可能性もありますが、キー自体は存在する必要があります。
:server-name (必須, 文字列)
サーバ名かサーバのIPアドレスが入っています。
:server-port (必須, 整数)
サーバのポート番号です。
:server-protocol (必須, キーワード)
クライアントがリクエストを投げるのに使ったプロトコルのバージョンです。典型的なものは:HTTP/1.0:HTTP/1.1です。
:request-uri (必須, 文字列)
リクエストURI全体です。"/"から始まります。
:server-protocol (必須, キーワード)
:raw-body (任意, ストリーム)
:http-user-agent (任意, 文字列)
:http-referer (任意, 文字列)
:remote-addr (必須, 文字列)
:remote-port (必須, 整数)
:http-server (必須, キーワード)
Clack Handlerの名前です。:hunchentoot:apacheが入ります。