Mal*_*ean 4 ruby post json sinatra
所以,我意识到已经就这个问题提出了两个 问题,但(不幸的是)我的情况似乎有所不同.
该西纳特拉自述说,做了POST数据如下:
post "/api" do
request.body.rewind # in case someone already read it
data = JSON.parse request.body.read
"Hello #{data['name']}!"
end
Run Code Online (Sandbox Code Playgroud)
当我尝试这个时,我得到:
JSON::ParserError: A JSON text must at least contain two octets!
Run Code Online (Sandbox Code Playgroud)
其他问题涉及数据为零或格式不正确(\"而不是")的情况,但我的数据似乎很好.如果我打开irb和JSON.parse完全相同的字符串,我正在POST,它工作得很好.
这是我用来测试的命令:
curl -XPOST http://localhost:5000/endpoint --data '{"foo":"bar","blah":"wat","abcdefghijklmnop":"qrstuvwxyz"}'
Run Code Online (Sandbox Code Playgroud)
我觉得这应该是非常明显的,因为解析POST数据对于Web服务器来说是一件非常基本的事情.显然不是.
编辑:如果我打电话logger.info Hash[params],我得到:
{"{\"foo\":\"bar\",\"blah\":\"wat\",\"abcdefghijklmnop\":\"qrstuvwxyz\"}"=>nil, "splat"=>[], "captures"=>["endpoint"], "resource"=>"endpoint"}
Run Code Online (Sandbox Code Playgroud)
......但我不确定是否/如何帮助.
尝试这些方面:
post "/api" do
request.body.rewind # in case someone already read it
data = JSON.parse (request.body.read || '{"name":"Not Given"}')
"Hello #{data['name']}!"
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12469 次 |
| 最近记录: |