通过终端使用curl发送JSON POST请求到Rails应用程序

110

我正在尝试使用OS X终端上的curl命令创建Rails应用程序中的用户。 无论我如何格式化数据,该应用程序都会返回一个响应,指出我的任何验证均未通过。

curl http://localhost:3000/api/1/users.json -i -X POST -d {"user":{"first_name":"firstname","last_name":"lastname","email":"email@email.com","password":"app123","password_confirmation":"app123"}}"

我尝试了各种变化。我尝试过使用[]括号,我尝试过user={data..},但似乎都不起作用。有什么想法吗?


为什么不直接使用 $ rails cUser.create :first_name => 'John', :last_name => 'Smith', ... 呢? - coreyward
24
那样做会违背API的初衷。 - Wukerplank
它真的让我困惑了。 - chris sun
嗨,Bob可能找到了问题所在,但如果有帮助的话,这是我昨天发现的一篇文章:http://squarism.com/2011/04/01/how-to-write-a-ruby-rails-3-rest-api/ 它是关于XML的,但可能会有所帮助。最好的问候。 - plang
1个回答

232

首先,你的命令末尾有一个多余的引号。

试一下这个:

curl -v \
  -H "Accept: application/json" \
  -H "Content-type: application/json" \
  -X POST \
  -d ' {"user":{"first_name":"firstname","last_name":"lastname","email":"email@email.com","password":"app123","password_confirmation":"app123"}}' \
  http://localhost:3000/api/1/users

就是这样。我昨晚想通了,它需要-H接受和内容类型。 - chris sun
在我的情况下,我需要用引号括起目标URL。 - Jonathan Lin
1
我成功地将上述命令中的-v(冗长模式)开关和-H“Accept:…”选项移除,但它仍然可以正常工作。 - Dan
2
你可以考虑移除 -X POST,因为你已经在使用 -d 参数了。 - Luke W
@Bob,我们可以传递多个用户吗? - yerassyl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接