curl json post запрос через терминал в приложение rails

109

Я пытаюсь создать пользователя в моем приложении rails с помощью команды curl из терминала os x. Независимо от того, как я форматирую данные, приложение возвращает ответы, которые не прошли мои проверки.

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

Я перепробовал все варианты. Я пробовал использовать скобки [], пробовал user = {data ..}, но ничего не работает. Любые идеи?

Крис Сан
источник
Почему бы просто не использовать $ rails cи User.create :first_name => 'John', :last_name => 'Smith', ...?
coreyward
23
@coryward: Это уничтожило бы всю цель API.
Wukerplank
это действительно поставило меня в тупик
Крис
Привет, Боб, возможно, нашел проблему, но если это может помочь, вот сообщение, которое я нашел вчера: squarism.com/2011/04/01/how-to-write-a-ruby-rails-3-rest-api Речь идет об XML, но это может помочь. С уважением.
план

Ответы:

227

Во-первых, в конце вашей команды есть постороннее ".

Попробуй это

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
Боб
источник
вот и все. Вчера вечером я понял, что ему нужны -H Accept и Content-type.
Крис
Привет, я могу вызвать такой сценарий: abc.com/?a=4&b= {"x": "y"}. Вы можете сказать мне, как это будет выглядеть в терминале curl ??
user739711
хммм, в моем случае мне нужно было заключить целевой URL в кавычки
Джонатан Лин
1
Мне удалось удалить переключатель -v (подробный) и -H «Принять: ...» из приведенного выше, и он все еще отлично работает для меня.
Дэн
2
думаю, вы также можете удалить -X POST, так как ur использует -d
Люк W