CURLの書き方について
新しい職場になって、今までほぼ使わなかったcurlコマンドを打つことが増えたので
コマンドの組み立て方について書いていこうと思います。
curlの基本構文
curlの入力書式は以下になります。
curl [options] [URL]
メソッドがGETかそれ以外か?
GETの場合
何も必要ありません。
それ以外の場合
オプションで -X メソッド名
を追加します。
POSTの場合であれば、-X POST
を指定します。
curl -X POST ...
リクエストヘッダーがあるか?
ある場合
オプションで -H
を追加します。
curl -H "Content-Type: application/json" ...
プロキシの設定が必要か?
プロキシが必要な場合 -x プロキシサーバ:ポート番号
が必要です。
curl -x プロキシサーバ:ポート番号 ...
リクエストbodyパラメータはjson形式かurl-encode方式か?
リクエストbodyパラメータはいくつあるか?
jsonの場合
-dオプションを付けてJSON形式で設定を行います。。
-d '{"parameter1":"value1", "parameter2":"value2"}'
url-encode方式で1つの場合
urlencode形式の場合は、URLにパラメータを仕込むことになります。
1つの場合であれば、以下のように?parametr1=value1
となるので、特に設定は必要ありません。
curl ... http://....?parameter1=value1
url-encode方式で2つ以上の場合
urlencode形式の場合は、URLにパラメータを仕込むことになります。
2つ以上の場合であれば、2つ目以降は&でつなげます。
つまり、URLは?parameter1=value1¶meter2=value2
のようになります。
問題になるのは、curlでは&
は予約語なのでエスケープシーケンスする必要があることです。
つまり単純にURLを送ろうとするとエラーが起きるわけです。
Urlencode方式であれば、以下のように文字列として認識させてあげれば2つ以上のパラメータでも送ることができます。
curl ... "http://....?parameter1=value1¶meter2=value2"
詳細なログがほしいか?
詳細なログが欲しい場合は -v
オプションを指定すれば可能です。
$ curl -v ...
逆に必要にない場合は、-s
オプションを指定します。