curl json żądanie pocztowe przez terminal do aplikacji railsowej

109

Próbuję utworzyć użytkownika w mojej aplikacji railsowej za pomocą polecenia curl z terminala OS X. Bez względu na to, w jaki sposób sformatowałem dane, aplikacja zwraca odpowiedzi, które nie przeszły żadnej z moich weryfikacji.

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

Próbowałem wszystkich odmian. Próbowałem używać nawiasów [], próbowałem user = {data ..} i wydaje się, że nic nie działa. Jakieś pomysły?

chris sun
źródło
Dlaczego nie po prostu użyć $ rails ci User.create :first_name => 'John', :last_name => 'Smith', ...?
coreyward
23
@coryward: To zniweczyłoby cały cel API.
Wukerplank,
naprawdę mnie zaskoczyło
chris sun
Cześć, Bob może znalazł problem, ale na wypadek, gdyby mógł pomóc, oto post, który znalazłem wczoraj: squarism.com/2011/04/01/how-to-write-a-ruby-rails-3-rest-api Chodzi o XML, ale może pomóc. Z poważaniem.
plang

Odpowiedzi:

227

Po pierwsze, na końcu twojego polecenia pojawia się obcy.

Spróbuj tego

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
Pion
źródło
to było to. Zeszłej nocy doszedłem do wniosku, że wymaga typu -H Accept i Content.
chris sun
Cześć, wywołuję taki skrypt: abc.com/?a=4&b= {"x": "y"}. Czy możesz mi powiedzieć, jak by to wyglądało w zwijanym terminalu?
user739711
hmmm w moim przypadku musiałem otoczyć docelowy adres URL cudzysłowami
Jonathan Lin,
1
Udało mi się usunąć przełącznik -v (gadatliwy) i -H "Akceptuj: ..." z powyższego i nadal działa dobrze.
Dan
2
myślę, że możesz również usunąć -X POST, ponieważ używasz -d
Luke W