データベースに入力する一連のデータがあります。データを入力するためのユーザーインターフェイスは、一括入力には適していません。そのため、同等のコマンドラインを作成しようとしています。 ChromeでUIのネットワークリクエストを調べると、jsonオブジェクトのPUTリクエストが表示されます。リクエストを複製しようとすると
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`
エラーが出る
curl:(3)[globing] pos Xでネストされたブレースはサポートされていません
Xは最初の「[」の文字位置です。
配列を含むjsonオブジェクトをPUTするにはどうすればよいですか?
コマンドラインには、PUTで送信する文字列の前に -d /-data を挿入し、AcceptではなくContent-Typeを設定する必要があります。
curl -H 'Content-Type: application/json' -X PUT -d '[JSON]' http://example.com/service
質問の正確なJSONデータを使用すると、完全なコマンドラインは次のようになります。
curl -H 'Content-Type: application/json' -X PUT \
-d '{"tags":["tag1","tag2"],"question":"Which band?","answers":[{"id":"a0","answer":"Answer1"},{"id":"a1","answer":"answer2"}]}' \
http://example.com/service
元の投稿には他の問題(「-d」がないなど)がありましたが、エラーメッセージはより一般的です。
curl:(3)[globing] pos Xでネストされたブレースはサポートされていません
これは、中括弧{}と角括弧[]がcurlの特別なグロビング文字であるためです。このグロビングをオフにするには、「-g」オプションを使用します。
例として、次のSolrファセットクエリは、"-g"を使用せずに失敗し、カールグロビングをオフにします:curl -g 'http://localhost:8983/solr/query?json.facet={x:{terms:"myfield"}}'
Accept
ヘッダーは、サーバーに戻って受け入れているものについて何かを伝えるのに対して、このコンテキストの関連ヘッダーはContent-Type
であることに注意してください
JSONを送信するときに、Content-Type
をapplication/json
として指定することをお勧めします。 curlの構文は次のとおりです。
-H 'Content-Type: application/json'
したがって、完全なcurlコマンドは次のようになります。
curl -H 'Content-Type: application/json' -H 'Accept: application/json' -X PUT -d '{"tags":["tag1","tag2"],"question":"Which band?","answers":[{"id":"a0","answer":"Answer1"},{"id":"a1","answer":"answer2"}]}' http://example.com/service`
助けられた唯一のことは、JSON本文テキストの代わりにJSONのファイルを使用することです。 cURLを使用してファイルの内容をボディエンティティとして送信する方法 に基づく
-gとともに二重引用符の代わりに単一引用符を使用してみてください
次のシナリオは私のために働いた
curl -g -d '{"collection":[{"NumberOfParcels":1,"Weight":1,"Length":1,"Width":1,"Height":1}]}" -H "Accept: application/json" -H "Content-Type: application/json" --user [email protected]:123456 -X POST https://yoururl.com
と
curl -g -d "{'collection':[{'NumberOfParcels':1,'Weight':1,'Length':1,'Width':1,'Height':1}]}" -H "Accept: application/json" -H "Content-Type: application/json" --user [email protected]:123456 -X POST https://yoururl.com
これは特にresolved my error curl command error:bad url colon最初の文字です