SinatraでJSONを受け取る方法。
結論: Rack::PostBodyContentTypeParser を使う。
やり方
rack-contribをインストールする
Gemfile
gem 'rack-contrib'
or
$ gem install rack-contrib
Rack::PostBodyContentTypeParserを有効にする
app.rb
require 'sinatra'
require 'rack/contrib'
use Rack::PostBodyContentTypeParser
post '/hoge' do
params[:foo]
end
動作確認
$ curl -X POST -H 'Content-Type: application/json' -d '{"foo": "bar"}' http://localhost:4567/hoge
bar
ただし、リクエストのContent-Typeはapplication/jsonである必要があるので注意。