我正在从客户端向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"}
发布数据无处可寻,有什么不对?
答案 0 :(得分:4)
这是一个常见的错误。 Sinatra只是解析表单数据(source)。
要解决此问题,请使用rack-contrib
或request.body
。
表单参数看起来像这样
curl -X POST 127.1:4567/ -d "foo=bar"
您可以使用request.body.read
或使用rack contrib。
<强>机架的contrib 强>
gem install rack-contrib
需要它
要求'机架'
要求'rack / contrib'
加载use Rack::PostBodyContentTypeParser
使用此功能,您可以正常使用params
json post数据。像这样:
curl -X POST -H "Content-Type: application/json" -d '{"payload":"xyz"}' 127.1:4567/
来源: