はじめに
こんにちは!今回はcurlコマンドについて解説します。
curlは、HTTPリクエストを送信してWebからデータを取得・送信するコマンドです。wgetと似ていますが、POSTリクエストやAPI呼び出しに強いのが特徴。APIテストやスクリプト自動化、データ取得の現場で毎日使われるコマンドですね。
「Webとの通信機」って感じです。
curlコマンドとは
curlは、URLを指定してHTTP/HTTPS通信を行うコマンドラインツールです。“client URL"の略ですね。
wgetはダウンロード専門ですが、curlはより柔軟。GET/POST/PUT/DELETEなど複数のHTTPメソッドに対応し、ヘッダー設定、認証、JSONデータ送信など、Web API操作に必要な機能が充実しています。開発者やサーバー管理者の必須ツールです。
基本構文
|
|
URLを指定するだけでGETリクエストを送信。レスポンスがSTDOUTに出力されます。
主なオプション
| オプション | 説明 |
|---|---|
-o |
レスポンスをファイルに保存 |
-O |
元のファイル名で保存 |
-d |
POSTデータを送信 |
-X |
HTTPメソッド指定(GET/POST/PUT/DELETE等) |
-H |
ヘッダーを追加 |
-i |
ヘッダーを含めて表示 |
-I |
ヘッダーのみ表示 |
-L |
リダイレクトに従う |
-u |
認証情報(ユーザー:パスワード) |
-b |
Cookie を送信 |
-A |
User-Agent を指定 |
使用例
例1: 基本的なGETリクエスト
|
|
実行結果:
|
|
URLにGETリクエストを送信。HTMLが出力されます。
例2: レスポンスをファイルに保存
|
|
実行結果:
|
|
-oでレスポンスをファイルに保存。ダウンロードプログレスが表示。
例3: 元のファイル名で保存
|
|
実行結果:
|
|
-Oで元のファイル名image.pngで保存。
例4: POSTリクエストでデータ送信
|
|
実行結果:
|
|
-dでPOSTデータを送信。JSONレスポンスが返される。
例5: JSONデータを送信
|
|
実行結果:
|
|
ヘッダーでJSON指定。JSONデータを送信。
例6: ヘッダーを確認
|
|
実行結果:
|
|
-iでレスポンスヘッダーを含めて表示。
例7: ヘッダーのみ表示
|
|
実行結果:
|
|
-Iでヘッダーのみ表示。ステータスコードやContent-Typeを確認。
例8: リダイレクトに従う
|
|
実行結果:
|
|
-Lで301/302リダイレクトに自動で従う。
例9: Basic認証でアクセス
|
|
実行結果:
|
|
-uでユーザー名とパスワードを指定。Basic認証対応。
例10: カスタムヘッダーを追加
|
|
実行結果:
|
|
-Hで複数のカスタムヘッダーを追加。API認証に使用。
Tips・注意点
POSTとGET の違い
|
|
HTTPメソッドを明確に指定することが大切。
JSONレスポンスの見やすい表示
|
|
jqコマンドと組み合わせて、JSONレスポンスをフォーマット表示。
サイレント実行
|
|
-sでプログレスバーを非表示。スクリプトでの使用に適切。
実践的な使い方
REST API へのリクエスト
|
|
REST APIにユーザー登録データを送信。
ファイルアップロード
|
|
-Fでフォーム形式でファイルをアップロード。
ページの存在確認
|
|
ステータスコードのみを取得。ヘルスチェックに活用。
まとめ
curlコマンドのポイント:
- HTTPリクエストを送信してWebからデータを取得・送信
- -o: レスポンスをファイルに保存
- -d: POSTデータを送信
- -X: HTTPメソッドを指定
- -H: ヘッダーを追加(API認証に必須)
- -i: ヘッダーを含めて表示
- -L: リダイレクトに従う
- -u: Basic認証
- よく使う組み合わせ:
curl -X POST -H -d,curl -i,curl -L
Web API操作の必須ツール。wgetとの使い分けができると、スクリプト自動化の幅が大きく広がりますよ!