mBaaSのスクリプト機能はNode.jsのほか、Rubyも選択できます。しかし、その情報はあまり多くありません。そこでRubyで開発する際に必要になるであろう情報を紹介します。
POST/PUT時のリクエストデータについて
POST/PUTメソッドを利用する場合、ボディデータを利用するかと思います。たとえばNCMBからは次のようにリクエストするでしょう。
const name = 'Hello' const res = await ncmb.Script .data({ name }) .exec('POST', 'script.rb');
この場合、データは次のように取得できます。コツは req.body.read で文字列としてデータを取得し、JSON.parseでHashオブジェクトに変換します。
require "rack" require 'json' def call(env) req = Rack::Request.new(env) if req.post? || req.put? params = JSON.parse(req.body.read) name = params['name'] || 'POST/PUT' end end
GETの場合は req.params がHashになっています。
if req.get? name = req.params['name'] end
ヘッダーの利用
スクリプトを実行する際に、独自のヘッダーを設定できます。このヘッダーは HTTP_
を頭に追加して取得しますので注意してください。たとえば次のような curl コマンドを実行します。
curl -X POST -d '{"code": "name"}' -H "MyHeader: value" -H "Content-Type: application/json" http://example.com/
この MyHeader を受け取るには、次のようにコードを書きます。
req.get_header('HTTP_MYHEADER')
Content-Typeや一部のHTTPヘッダーは専用のメソッドで取得できます。
req.content_type # => application/json
メソッドの判別
リクエスト時のHTTPメソッドの判別は req.request_method
を利用してください。
まとめ
RubyはRack互換で呼ばれますので、Rackのドキュメントを読めば実装方法は分かるかと思います。とはいえ、すぐに使ってみたいとも思うでしょう。この記事に書いてある方法を真似れば、Rubyでも容易にmBaaS上で実行できるようになるはずです。