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

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

スクリプト機能でRubyを利用する際のオブジェクトについて学ぶ

f:id:mbaasdevrel:20180418153723p:plain

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上で実行できるようになるはずです。

中津川 篤司

中津川 篤司

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