curl json post demande via un terminal vers une application de rails


109

J'essaie de créer un utilisateur sur mon application rails avec une commande curl du terminal os x. Quelle que soit la façon dont je formate les données, l'application renvoie une réponse que aucune de mes validations n'a réussi.

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"}}"

J'ai essayé toutes les variantes. J'ai essayé d'utiliser [] crochets, j'ai essayé user = {data ..} et rien ne semble fonctionner. Des idées?


Pourquoi ne pas simplement utiliser $ rails cet User.create :first_name => 'John', :last_name => 'Smith', ...?
coreyward

23
@coryward: Cela irait à l'encontre de l'objectif global d'une API.
Wukerplank

il m'a vraiment perplexe
chris sun

Salut, Bob a peut-être trouvé le problème, mais au cas où cela pourrait aider, voici un post que j'ai trouvé hier: squarism.com/2011/04/01/how-to-write-a-ruby-rails-3-rest-api Il s'agit de XML, mais cela pourrait aider. Meilleures salutations.
plang le

Réponses:


227

Tout d'abord, il y a un "superflu" à la fin de votre commande.

Essaye ça

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

c'était ça. J'ai compris hier soir qu'il avait besoin du type -H Accept et Content-type.
chris soleil

Salut, je viens d'appeler un script comme celui-ci: abc.com/?a=4&b= {"x": "y"}. Pouvez-vous me dire à quoi cela ressemblerait dans le terminal curl?
user739711

hmmm dans mon cas, j'avais besoin d'entourer l'URL cible de guillemets
Jonathan Lin

1
J'ai pu supprimer le commutateur -v (verbeux) et -H "Accepter: ..." de ce qui précède et cela fonctionne toujours très bien pour moi.
Dan

2
pense que vous pouvez également supprimer -X POST depuis que vous utilisez -d
Luke W
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.