Saya memiliki serangkaian data untuk dimasukkan ke dalam database. Antarmuka pengguna untuk memasukkan data tidak baik untuk entri massal, jadi saya mencoba merumuskan baris perintah yang setara. Saat saya memeriksa permintaan jaringan UI di chrome, saya melihat permintaan PUT dari objek json. Saat saya mencoba mereplikasi permintaan tersebut
curl -H 'Accept: application/json' -X PUT '{"tags":["tag1","tag2"],"question":"Which band?","answers":[{"id":"a0","answer":"Answer1"},{"id":"a1","answer":"answer2"}]}' http://example.com/service`
Saya mendapatkan kesalahan
curl: (3) kurung kurawal bertingkat [globbing] tidak didukung pada pos X
Dimana X adalah posisi karakter pertama "[".
Bagaimana cara PUT objek json yang menyertakan array?
Meskipun posting asli memiliki masalah lain (yaitu "-d" yang hilang), pesan kesalahannya lebih umum.
Ini karena tanda kurung kurawal {} dan tanda kurung siku [] adalah karakter penggumpal khusus dalam ikal. Untuk mematikan globbing ini, gunakan opsi " -g ".
Sebagai contoh, kueri faset Solr berikut akan gagal tanpa "-g" untuk menonaktifkan curl globbing :
curl -g 'http://localhost:8983/solr/query?json.facet={x:{terms:"myfield"}}'
sumber
-g
berfungsi seperti yang diharapkan. Terima kasih @YonikHarus disebutkan bahwa
Accept
tajuk memberi tahu server sesuatu tentang apa yang kita terima kembali, sedangkan tajuk yang relevan dalam konteks ini adalahContent-Type
Seringkali disarankan untuk menentukan
Content-Type
sepertiapplication/json
saat mengirim JSON. Untuk curl sintaksnya adalah:Jadi perintah curl lengkapnya adalah:
sumber
Coba gunakan satu kutipan daripada tanda kutip ganda bersama dengan -g
Skenario berikut berhasil untuk saya
DENGAN
Ini terutama menyelesaikan kesalahan perintah curl kesalahan saya: titik dua url buruk adalah karakter pertama
sumber
Satu-satunya hal yang membantu adalah menggunakan file JSON alih-alih teks isi json. Berdasarkan Cara mengirim konten file sebagai entitas tubuh menggunakan cURL
sumber