curl json mengirim permintaan melalui terminal ke aplikasi rel

109

Saya mencoba membuat pengguna di aplikasi rel saya dengan perintah curl dari terminal os x. Tidak peduli bagaimana saya memformat data, aplikasi mengembalikan respons yang telah dilewati oleh non-validasi saya.

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

Saya sudah mencoba setiap variasi. Saya sudah mencoba menggunakan tanda kurung [], saya sudah mencoba user = {data ..} dan sepertinya tidak ada yang berhasil. Ada ide?

chris sun
sumber
Mengapa tidak menggunakan $ rails cdan User.create :first_name => 'John', :last_name => 'Smith', ...?
coreyward
23
@coryward: Itu akan menggagalkan seluruh tujuan API.
Wukerplank
itu benar-benar membuat saya bingung
chris sun
Hai, Bob mungkin menemukan masalahnya, tetapi jika itu bisa membantu, berikut adalah pos yang saya temukan kemarin: squarism.com/2011/04/01/how-to-write-a-ruby-rails-3-rest-api Ini tentang XML, tetapi mungkin membantu. Salam Hormat.
plang

Jawaban:

227

Pertama, ada "yang asing di akhir perintah Anda.

Coba ini

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
Bob
sumber
itu dia. Saya menemukan tadi malam bahwa itu membutuhkan -H Terima dan Jenis-konten.
Chris sun
Hai, saya memanggil skrip seperti ini: abc.com/?a=4&b= {"x": "y"}. Bisakah Anda memberi tahu saya seperti apa tampilan di terminal curl ??
pengguna739711
hmmm dalam kasus saya, saya perlu mengelilingi URL target dengan tanda kutip
Jonathan Lin
1
Saya dapat menghapus sakelar -v (verbose) dan -H "Terima: ..." dari atas dan masih berfungsi dengan baik untuk saya.
Dan
2
pikir Anda dapat menghapus -X POST juga karena Anda menggunakan -d
Luke W