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.