curl json, terminal aracılığıyla bir ray uygulamasına istek gönder


109

Raylar uygulamamda os x terminalinden bir curl komutuyla bir kullanıcı oluşturmaya çalışıyorum. Verileri nasıl biçimlendirirsem de, uygulama hiçbir doğrulamamın geçmediği yanıtları döndürüyor.

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

Her çeşidi denedim. [] Parantez kullanmayı denedim, user = {data ..} denedim ve hiçbir şey işe yaramıyor gibi görünüyor. Herhangi bir fikir?


Neden sadece $ rails cve kullanmıyorsunuz User.create :first_name => 'John', :last_name => 'Smith', ...?
coreyward

23
@coryward: Bu, bir API'nin tüm amacını ortadan kaldırır.
Wukerplank

gerçekten beni şaşırttı
chris sun

Merhaba, Bob sorunu bulmuş olabilir, ancak yardımcı olabilirse, işte dün bulduğum bir gönderi: squarism.com/2011/04/01/how-to-write-a-ruby-rails-3-rest-api XML ile ilgili, ancak yardımcı olabilir. Saygılarımla.
plang

Yanıtlar:


227

Öncelikle, komutunuzun sonunda bir "yabancı" var.

Bunu dene

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

işte buydu. Dün gece -H Kabul Et ve İçerik türüne ihtiyacı olduğunu anladım.
chris sun

Merhaba, bunun gibi bir komut dosyasını arıyorum: abc.com/?a=4&b= {"x": "y"}. Curl terminalinde nasıl görüneceğini bana söyleyebilir misin?
user739711

hmmm benim durumumda hedef URL'yi tırnak içine almam gerekiyordu
Jonathan Lin

1
Yukarıdan -v (ayrıntılı) anahtarını ve -H "Kabul Et: ..." i kaldırabildim ve hala benim için iyi çalışıyor.
Dan

2
-d
Luke W
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.