スクリプト機能では3つのデータを送れます。
- ヘッダー
- クエリストリング
- ボディ
Rubyでスクリプトを使う際にはこれらのデータを使って処理を書くことになりますが、その際の書き方について紹介します。
クエリストリングとボディは一緒
req = Rack::Request.new(env)
としてリクエストオブジェクトを取り出した時、req.params でクエリストリングとボディの内容が受け取れます。
この時、クエリストリングとボディに同じ名前の変数が指定してあった場合、ボディの値が優先されるので注意してください。
もし別なデータとして処理したい場合には req.env["QUERY_STRING"]
にクエリストリングの文字列が、 req.env["rack.request.form_hash"]
にボディの値がハッシュで入ってきます。
ヘッダーは名前に注意
ヘッダーは req.env[キー名]
でアクセスできます。ただし注意点として、HTTPヘッダーは自動的に HTTP_ が追加され、かつ大文字になります。そのため、もし a というキーで値を設定したら、 req.env["HTTP_A"]
でアクセスする形になります。
まとめ
Rackならではの注意点が幾つかありますので実装する際には注意してください。特にクエリストリングとボディの値上書きは不具合につながる可能性が高いので、重ならないように気をつけて開発した方が良いでしょう。