curl json post solicitud a través de terminal a una aplicación de rieles

109

Estoy tratando de crear un usuario en mi aplicación rails con un comando curl desde el terminal os x. No importa cómo formatee los datos, la aplicación devuelve respuestas que ninguna de mis validaciones ha pasado.

curl http://localhost:3000/api/1/users.json -i -X POST -d {"user":{"first_name":"firstname","last_name":"lastname","email":"[email protected]","password":"app123","password_confirmation":"app123"}}"

Probé todas las variaciones. Intenté usar [] corchetes, probé user = {data ..} y nada parece funcionar. ¿Algunas ideas?

chris sun
fuente
¿Por qué no usar $ rails cy User.create :first_name => 'John', :last_name => 'Smith', ...?
coreyward
23
@coryward: Eso frustraría todo el propósito de una API.
Wukerplank
realmente me tiene perplejo
chris sun
Hola, Bob tal vez encontró el problema, pero en caso de que pudiera ayudar, aquí hay una publicación que encontré ayer: squarism.com/2011/04/01/how-to-write-a-ruby-rails-3-rest-api Se trata de XML, pero podría ayudar. Atentamente.
plang

Respuestas:

227

En primer lugar, hay un "extraño" al final de su comando.

Prueba esto

curl -v \
  -H "Accept: application/json" \
  -H "Content-type: application/json" \
  -X POST \
  -d ' {"user":{"first_name":"firstname","last_name":"lastname","email":"[email protected]","password":"app123","password_confirmation":"app123"}}' \
  http://localhost:3000/api/1/users
Beto
fuente
eso fue todo. Anoche me di cuenta de que necesita el tipo -H Accept y Content.
chris sun
Hola, estoy llamando a un script como este: abc.com/?a=4&b= {"x": "y"}. ¿Puedes decirme cómo se vería en la terminal curl?
user739711
hmmm en mi caso necesitaba rodear la URL de destino con comillas
Jonathan Lin
1
Pude quitar el modificador -v (detallado) y -H "Aceptar: ..." de lo anterior y todavía funciona bien para mí.
Dan
2
creo que también puede eliminar -X POST ya que está usando -d
Luke W