FJCT_ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

Rubyのスクリプト機能で受け取れるデータについて

f:id:mbaasdevrel:20180418153723p:plain スクリプト機能では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ならではの注意点が幾つかありますので実装する際には注意してください。特にクエリストリングとボディの値上書きは不具合につながる可能性が高いので、重ならないように気をつけて開発した方が良いでしょう。

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。