【cURL】「&」付きでクエリ文字列を指定して投げると失敗する原因と解決策をお伝えします

こんにちは。たいら(@tairaengineer2)です。
転職を繰り返し現在5社経験している、14年目エンジニアです。

この記事では、curlコマンドを実行したとき

というようにクエリ文字列に「&」が付いていない場合は

curlで「&」付きでクエリ文字列を指定して投げると失敗する原因と解決策
正常に動くのに

というようにクエリ文字列に「&」が付いている場合は

curlで「&」付きでクエリ文字列を指定して投げると失敗する原因と解決策
クエリ文字列に指定した2つ目が認識されていない、そもそも止まらない、とりあえず、想定通りではない動きをしたときの原因とその解決策をお伝えします。
(↑の止まらない状態は、ctrlキー+cキーで止まります。)

「&」付きでクエリ文字列を指定して投げると失敗する原因

おかしな動きをする原因は、「&」が原因です。
「&」はLinuxでもWindowsでもコマンドとして意味を持っています。
なので

のコマンドは

までしか解釈されず、「&」が悪さをして想定通りの動きをしませんでした。

「&」付きでクエリ文字列を指定して投げると失敗する解決策

2つあります。

1つはクエリ文字列ごとURLをまるっと「”(ダブルクオーテーション)」で囲むことです。
先ほどのcurlコマンドだと

になり、実行すると2つ目も認識されて実行することができます。

curlで「&」付きでクエリ文字列を指定して投げると失敗する原因と解決策

もう1つはエスケープすることです
先ほどのcurlコマンドだと

になり、実行するとこちらも2つ目も認識されて実行することができます。

curlで「&」付きでクエリ文字列を指定して投げると失敗する原因と解決策

まとめ:「&」付きでクエリ文字列を指定して投げると失敗したときはエスケープしよう!

以上が「&」付きでクエリ文字列を指定して投げると失敗する原因と解決策でした!

あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ

コメント

タイトルとURLをコピーしました