gpt4 book ai didi

ruby - 如何从 sinatra 应用程序中发布的 JSON 中捕获参数哈希

转载 作者:数据小太阳 更新时间:2023-10-29 07:21:13 26 4
gpt4 key购买 nike

我有这个 curl 调用:

curl -v -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"name":"abc", "orgid":"12", "subject":"my subject"}' http://localhost:3000/mysinatraapp

post '/mysinatraapp' do
unless request.preferred_type.eql? 'text/html'
# This is not really params hash. It will be a string like "{\"name\"=>\"abc\", \"orgid\"=>\"12\", \"subject\"=>\"my subject\"}"
params = request.env["rack.input"].read
...
...
halt 400 if params.length == 0
end
# This does not work
p "hi #{params['name']}"
end

p "hi #{params['name']}" 失败,因为它不是哈希。我如何让它发挥作用?

我的目标是将发布的 json 作为 params 散列。这样我就可以像往常一样使用 params

最佳答案

您实际上传递的是 Ruby 哈希而不是 JSON 对象。

将您的 curl 命令更新为如下所示:

-d '{"name":"abc","orgid":"12","subject":"my subject"}'

然后在您的 Sinatra 操作中这样做:

params = JSON.parse(request.env["rack.input"].read)

确保你需要'json'

关于ruby - 如何从 sinatra 应用程序中发布的 JSON 中捕获参数哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13675549/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com