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@email.com","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?


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@email.com","password":"app123","password_confirmation":"app123"}}' \
  http://localhost:3000/api/1/users

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.