【发布时间】:2020-07-21 19:12:57
【问题描述】:
我正在开发我的第一个 Sinatra 应用程序,我很难从发布请求中获取参数。
我正在使用 MiniTest::Spec,我的规范看起来像
payload = File.read("./spec/support/fixtures/payload.json")
post "/api/v1/verify_payload", { payload: payload }, { "CONTENT_TYPE" => "application/json" }
last_response.body.must_eql payload
这是我的路线
namespace '/api/v1' do
post '/verify_payload' do
MultiJson.load(params[:payload])
end
end
规范失败,因为last_response.body 为空。
我错过了什么吗?
我还尝试从 verify_payload 返回整个 params,但在这种情况下它也返回了一个空字符串。
更新
curl -X POST -H "Content-Type: application/json" -d '{"payload":"xyz"}' http://localhost:9292/api/v1/verify_payload
不返回任何内容,服务器日志上也没有错误
[2014-01-06 01:16:25] INFO WEBrick::HTTPServer#start: pid=10449 port=9292
127.0.0.1 - - [06/Jan/2014 01:16:27] "POST /api/v1/verify_payload HTTP/1.1" 200 6 0.0220
谢谢
【问题讨论】:
-
帖子应该被第三方服务调用。我不打算从 UI 调用它。
-
您查看日志了吗?
-
见上面的更新。谢谢
-
您是否成功通过 GET 请求(或其他路线)?顺便说一句:programmers.stackexchange.com/questions/14293/… 阅读有关帕德里诺的评论。
-
是的,GET 请求工作正常。
curl http://localhost:9292/api/v1/whatever正确返回from get request。