我正在从客户端向Sinatra发出AJAX请求,但不知何故数据没有显示出来.Chrome请求标头选项卡表明在客户端方面一切正常:
Request Payload
{ test: Data }
然而,在Sinatra方面
post '/api/check/:name' do
sleep 3
puts params.inspect
end
和控制台:
127.0.0.1 - - [03/Feb/2014 10:45:53] "POST /api/check/name HTTP/1.1" 200 17 3.0019
{"splat"=>[], "captures"=>["name"], "name"=>"name"}
发布数据无处可寻,有什么不对?
这是一个常见的错误。 Sinatra只是解析表格数据(source)。
要解决这个问题,请使用rack-contrib
或request.body
。
表单参数看起来像这样
curl -X POST 127.1:4567/ -d "foo=bar"
您可以使用request.body.read
或使用rack contrib而不是params。
机架的contrib
gem install rack-contrib
安装它use Rack::PostBodyContentTypeParser
有了这个,你可以使用params
正常的json post数据。像这样的东西:
curl -X POST -H "Content-Type: application/json" -d '{"payload":"xyz"}' 127.1:4567/
来源: