Curl Json Post Anfrage über Terminal an eine Rails App


109

Ich versuche, einen Benutzer in meiner Rails-App mit einem Curl-Befehl vom OS X-Terminal zu erstellen. Unabhängig davon, wie ich die Daten formatiere, gibt die App Antworten zurück, die nicht von meinen Validierungen bestanden wurden.

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

Ich habe jede Variation ausprobiert. Ich habe versucht, [] Klammern zu verwenden, ich habe versucht, user = {data ..} und nichts scheint zu funktionieren. Irgendwelche Ideen?


Warum nicht einfach $ rails cund verwenden User.create :first_name => 'John', :last_name => 'Smith', ...?
Coreyward

23
@coryward: Das würde den gesamten Zweck einer API zunichte machen.
Wukerplank

es hat mich wirklich verblüfft
Chris Sun

Hallo, Bob hat das Problem vielleicht gefunden, aber falls es helfen könnte, hier ist ein Beitrag, den ich gestern gefunden habe: squarism.com/2011/04/01/how-to-write-a-ruby-rails-3-rest-api Es geht um XML, aber es könnte helfen. Freundliche Grüße.
Plang

Antworten:


227

Zunächst einmal gibt es eine fremde "am Ende Ihres Befehls.

Versuche dies

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

Das war's. Ich habe letzte Nacht herausgefunden, dass es den Typ -H Accept und Content braucht.
Chris Sun

Hallo, ich rufe ein Skript wie dieses auf: abc.com/?a=4&b= {"x": "y"}. Können Sie mir sagen, wie es im Curl-Terminal aussehen würde?
user739711

hmmm in meinem Fall musste ich die Ziel-URL mit Anführungszeichen umgeben
Jonathan Lin

1
Ich konnte den Schalter -v (ausführlich) und -H "Akzeptieren: ..." von oben entfernen und es funktioniert immer noch gut für mich.
Dan

2
Ich denke, Sie können -X POST auch entfernen, da Sie -d verwenden
Luke W
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.