curl json поштовий запит через термінал до додатку рейки


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

це насправді мене наткнуло
chris sun

Привіт, Боб, можливо, знайшов проблему, але у випадку, якщо це може допомогти, ось такий пост, який я знайшов вчора: 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.
chris sun

Привіт, я закликаю такий сценарій: abc.com/?a=4&b= {"x": "y"}. Ви можете мені сказати, як це виглядатиме в терміналі curl ??
користувач739711

хммм, в моєму випадку мені потрібно було оточити цільову URL-адресу цитатами
Джонатан Лін

1
Мені вдалося зняти перемикач -v (багатослівний) і -H "Прийняти: ..." з вищезазначеного, і він усе ще працює для мене добре.
День

2
думаю, ви можете видалити -X POST також, оскільки ур використовує -d
Luke W
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.