From d842c1455279c69b011cd761558b32a50b407922 Mon Sep 17 00:00:00 2001 From: Kouhei Yanagita Date: Wed, 13 Oct 2010 06:02:54 +0900 Subject: [PATCH] Updated Japanese README with request object documentation. Signed-off-by: Konstantin Haase --- README.jp.rdoc | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/README.jp.rdoc b/README.jp.rdoc index 6230428c8d..8c6657e48e 100644 --- a/README.jp.rdoc +++ b/README.jp.rdoc @@ -331,6 +331,53 @@ body部を指定することもできます ... ルートブロックからすぐに抜け出し、次にマッチするルートを実行します。 マッチするルートが見当たらない場合は404が返されます。 +== リクエストオブジェクトへのアクセス + +受信するリクエストオブジェクトは、`request`メソッドを通じてリクエストレベル(フィルタ、ルート、エラーハンドラ)からアクセスすることができます: + + # アプリケーションが http://example.com/example で動作している場合 + get '/foo' do + request.body # クライアントによって送信されたリクエストボディ(下記参照) + request.scheme # "http" + request.script_name # "/example" + request.path_info # "/foo" + request.port # 80 + request.request_method # "GET" + request.query_string # "" + request.content_length # request.bodyの長さ + request.media_type # request.bodyのメディアタイプ + request.host # "example.com" + request.get? # true (他の動詞についても同様のメソッドあり) + request.form_data? # false + request["SOME_HEADER"] # SOME_HEADERヘッダの値 + request.referer # クライアントのリファラまたは'/' + request.user_agent # ユーザエージェント (:agent 条件によって使用される) + request.cookies # ブラウザクッキーのハッシュ + request.xhr? # Ajaxリクエストかどうか + request.url # "http://example.com/example/foo" + request.path # "/example/foo" + request.ip # クライアントのIPアドレス + request.secure? # false + request.env # Rackによって渡された生のenvハッシュ + end + +script_namepath_infoなどのオプションは次のように利用することもできます: + + before { request.path_info = "/" } + + get "/" do + "全てのリクエストはここに来る" + end + +request.bodyはIOまたはStringIOのオブジェクトです: + + post "/api" do + request.body.rewind # 既に読まれているときのため + data = JSON.parse request.body.read + "Hello #{data['name']}!" + end + + == 設定 どの環境でも起動時に1回だけ実行されます。