curl (カール)のオプションを解説します。
REST API のテスト時や、POST リクエストの送信時にご活用ください。
なお、今回オプションを確認した curl は以下のバージョンです。
curl 7.35.0 (x86_64-pc-linux-gnu) libcurl/7.35.0
・POST リクエストを送信
・POST パラメータを複数指定
・リクエストヘッダを指定
・JSON データを送信
・外部ファイルを送信
・ユーザーエージェントを指定
・レスポンスヘッダのみを取得
・リダイレクト先を追う
・BASIC 認証を行う
・取得内容をファイルに保存
・進捗表示を無効化
curl で POST リクエストを送信する
curl に -XPOST
を付加すると POST リクエストとなります。
-d <パラメータ名>=<値>
の形式で送信内容を指定可能です。
curl -XPOST -d 'token=abcdefg12345678' https://xxxxx
-d
の代わりに --data
を使用しても同様の動きをします。
シェルスクリプトに記載する場合は --data
の方が分かりやすいでしょう。
curl -XPOST --data 'token=abcdefg12345678' https://xxxxx
POST リクエストのパラメータを複数指定する
パラメータを複数 POST したい場合は、&
で繋げます。
curl -XPOST --d 'name=tanaka&age=20' https://xxxxx
もしくは、 -d
オプションを複数記載しても OK です。
curl -XPOST --d 'name=tanaka' -d 'age=20' https://xxxxx
任意のリクエストヘッダを付与する
-H
オプションで任意のリクエストヘッダを指定できます。
REST API の認証に使われる Authorization
ヘッダの指定例は次の通りです。
curl -H "Authorization: Bearer zzzzzz" https://xxxxx
curl コマンドで JSON データを POST する
JSON を送信する場合は、Content-Type
の指定が必要です。
リクエストヘッダのオプション -H
を用います。
curl -XPOST -H "Content-Type: application/json" -d '{"name":"tanaka"}' https://xxxxx
POST データを外部ファイルから読み込む
POST で送信する内容が多い場合は、あらかじめテキストファイルを作成しておきます。
テキストファイルには POST するデータを直接記載します。
echo "name=hogefuga&age=20" > postdata.txt
-d @ファイル名
もしくは --data @ファイル名
の形式で、用意したファイル名を指定します。
curl -XPOST --data @postdata.txt https://xxxxx
curl のユーザエージェントを指定する
任意の User-Agent を使用してアクセスすることも可能です。
リクエストヘッダ指定用の -H
オプションを活用します。
curl -H "User-Agent: Mozilla/5.0 Chrome/69.0" https://xxxxx
curl のバージョンによっては -A
や --user-agent
でも指定できます。
curl --user-agent "Mozilla/5.0 Chrome/69.0" https://xxxxx
レスポンスヘッダのみを取得する
-I
オプションを付与すると HEAD
リクエストが送信されます。
HEAD
リクエストでは、レスポンスヘッダのみが取得可能です。
curl -I https://xxxxx
ただし、HEAD
リクエストでは正しい値を取得できないサーバも存在します。
その場合は、GET
リクエストを送信しつつヘッダのみを出力します。
curl -so /dev/null --dump-header - https://xxxxx
curl でリダイレクト先を追う
-L
オプションを指定することで、リダイレクト発生時は自動遷移します。
curl -L https://xxxxx
-I
オプションと組み合わせるとリダイレクトの動作確認が容易に行なえます。
curl -LI https://xxxxx
curl で BASIC 認証を行う
-u
オプションで、BASIC 認証のユーザ名とパスワードを指定します。
curl -u user:password https://xxxxx
curl で取得した内容をファイルへ保存する
curl で取得したデータをファイルへ書き込めます。
ファイルをダウンロードするコマンドとしても活用可能です。
curl https://xxxxx > hoge.txt
-o
オプションでもファイル書き出しが可能です。
wget コマンドが使えないサーバーなどで便利に使えます。
curl -o hoge.txt https://xxxxx
curl 実行中の進捗表示を無効化する
curl の実行内容によっては、画面に進捗表示が出力されます。
-s
もしくは --silent
オプションを指定すると表示を消すことができます。
curl --silent https://xxxxx > hoge.txt
まとめ
curl コマンドの様々なオプションを紹介しました。
curl には、サーバー構築時や API の動作確認に役立つオプションが揃っています。
POST の送信だけでなく、任意のリクエストヘッダも付与できます。
よく使うオプションを覚えておくことで、作業を効率的に進めましょう。
【関連記事】
⇒ ls コマンドのオプション解説
⇒ jq コマンドで JSON を加工する
⇒ jq コマンド応用編
⇒ MySQL のクエリ結果を整形する
⇒ Apache アクセスログの解析コマンド
⇒ CentOS が重いときの確認コマンド
⇒ CentOS のサービス一覧を確認する
⇒ file, strings, zipinfo でファイルを調査する