Sinatra不显示开机自检数据



我正在向客户端向Sinatra提出AJAX请求,但以某种方式显示数据。ChromeRequest request Headers Tab表明,在客户端是一切正常:

Request Payload 
{ test: Data }

但是,在辛纳屈的一面

  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只是解析数据(来源)。

修复此使用rack-contribrequest.body

表单参数看起来像这样

curl -X POST 127.1:4567/ -d "foo=bar"

而不是参数您只能使用request.body.read或使用rack contry。

rack-contrib

  1. 使用gem install rack-contrib
  2. 安装它
  3. 需要它

    需要'机架'

    需要'机架/贡献'

  4. 加载 use Rack::PostBodyContentTypeParser

使用此功能,您可以将params作为JSON PORT数据的正常使用。这样的东西:

curl -X POST -H "Content-Type: application/json" -d '{"payload":"xyz"}' 127.1:4567/

来源:

  • sinatra控制器参数方法在JSON POST请求中空着,
  • http://jaywiggins.com/2010/03/using-rack-middlewarewareware-to-parse-json/

最新更新