RABLとは…
インストール
source :rubygems
gem 'sinatra'
gem 'rabl'
$ bundle install
基本
class MyApp < Sinatra::Base
Rabl.register!
set :rabl, :format => :json
get '/' do
get :rabl, :home
end
end
node(:greeting) do
'Hello, Sinatra with RABL!'
end
$ curl http://myapp.dev
{"greeting":"Hello, Sinatra with RABL!"}
レイアウト
- APIのレスポンスとしては、ステータスコードなどのメタ情報をすべてのレスポンスに共通して含めたい。
- なので、Sinatraのテンプレートを使ってみる。
{
"status": <%= response.status %>,
"result": <%= yield %>
}
get '/' do
render :rabl, :home, :layout_engine => :erb
end
$ curl http://myapp.dev
{
"status": 200,
"result": {"greeting":"Hello, Sinatra with RABL!"}
}
- RABLのwikiにあるように、ruby 1.9.xではRABLでレイアウトを書けないので、erbを使う。
- レスポンス本体とレイアウトのエンジンが異なる場合は、
:layout_engine => :erb
と指定する必要があるっぽい。