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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.