通过终端将json卷曲请求发布到Rails应用


109

我正在尝试使用来自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 2011年

23
@coryward:那会破坏API的全部目的。
Wukerplank 2011年

它真的让我感到难过
chris sun

嗨,鲍勃(Bob)也许找到了问题,但万一可以解决,以下是我昨天发现的帖子:squarism.com/2011/04/01/how-to-write-a-ruby-rails-3-rest-api它与XML有关,但可能会有所帮助。最好的祝福。
plang 2011年

Answers:


227

首先,命令末尾有一个多余的“”。

试试这个

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 Accept和Content-type。
克里斯·孙

嗨,我叫这样的脚本:abc.com/?a =4 & b = {“ x”:“ y”}。你能告诉我卷曲终端的外观吗?
user739711 2012年

在我的情况下,嗯,我需要在目标网址两边加上引号
林俊杰

1
我能够从上面删除-v(详细)开关和-H“ Accept:...”,但对我来说仍然可以正常使用。
2013年

2
认为您也可以删除-X POST,因为您使用-d
Luke W
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.