【发布时间】:2014-07-28 07:12:17
【问题描述】:
我用 Sinatra 创建了一个简单的 API,它根据提交的 JSON 数据发送电子邮件。我可以创建一个表单,通过表单提交 JSON 数据,并访问参数以获取电子邮件的收件人、主题和正文。但是,我正在尝试使用 cURL 来测试 API,但似乎无法正常工作。我假设我在 cURL 请求中的格式被破坏了。下面是我尝试过的 cURL 请求以及 params 的输出,以及尝试使用 JSON gem 解析 params。
我倾向于使用一个巨大的键来获取参数,该键是我的 JSON 数据字符串,值为 nil。我尝试添加 Content-Type: application/json,当我这样做时,params 为空。
curl -X POST -H "Accept: application/json" -d '{ "to": "Brantley <test@gmail.com>", "subject": "hello world", "body": "Hi Jennifer! Sending you an email via this API I just made." }' http://localhost:9393/send-email
这是返回的参数哈希...
{"{ \"to\": \"Brantley <test@gmail.com>\", \"subject\": \"hello world\", \"body\": \"Hi Jennifer! Sending you an email via this API I just made.\" }"=>nil}
我尝试使用 JSON 参数将其转换为更有用的东西,然后我得到以下...
{\"{ \\\"to\\\": \\\"Brantley <test@gmail.com>\\\", \\\"subject\\\": \\\"hello world\\\", \\\"body\\\": \\\"Hi Jennifer! Sending you an email via this API I just made.\\\" }\":null}"
我在这方面度过了充实的一天,阅读了 20 篇关于类似问题的 stackoverflow 帖子,但我仍然感到困惑,所以任何建议都会有所帮助。干杯!
【问题讨论】:
-
curl 命令乍一看似乎没问题。但是,如果没有看到 Sinatra 代码,我们将无法帮助您。请整理一个展示问题的最小示例。
-
我明白了...没必要用参数胡闹。我可以通过执行以下操作将 JSON 有效负载作为哈希值... payload = JSON.parse(request.body.read)
-
请在下方添加答案并标记为已接受。谢谢!
标签: ruby json post curl params