curl json richiesta di post tramite terminale a un'app rails


109

Sto cercando di creare un utente sulla mia app rails con un comando curl dal terminale os x. Indipendentemente da come formatto i dati, l'app restituisce risposte che non sono state superate da nessuna delle mie convalide.

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

Ho provato ogni variazione. Ho provato a usare le parentesi [], ho provato user = {data ..} e niente sembra funzionare. Qualche idea?


Perché non usare $ rails ce User.create :first_name => 'John', :last_name => 'Smith', ...?
— coreyward

23
@coryward: ciò vanificherebbe l'intero scopo di un'API.
— Wukerplank

mi ha davvero sconcertato
— chris sun

Ciao, Bob forse ha trovato il problema, ma nel caso potesse aiutare, ecco un post che ho trovato ieri: squarism.com/2011/04/01/how-to-write-a-ruby-rails-3-rest-api Si tratta di XML, ma potrebbe essere d'aiuto. I migliori saluti.
— plang

Risposte:


227

Prima di tutto, c'è un estraneo "alla fine del tuo comando.

Prova questo

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

quello era. Ho scoperto ieri sera che necessita del tipo -H Accept e Content.
— chris sun

Salve, ho chiamato uno script come questo: abc.com/?a=4&b= {"x": "y"}. Puoi dirmi come sarebbe nel terminale curl ??
— user739711

hmmm nel mio caso avevo bisogno di racchiudere l'URL di destinazione tra virgolette
— Jonathan Lin

1
Sono stato in grado di rimuovere l'opzione -v (verbose) e -H "Accept: ..." da sopra e funziona ancora bene per me.
— Dan

2
pensa di poter rimuovere anche -X POST poiché stai usando -d
— Luke W
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.