cURL(カール)とは何か?
cURL(コマンドラインURL)は、コマンドラインやスクリプトからHTTP/HTTPSなどのプロトコルを使ってデータを送受信するためのツールです。Web APIをテストしたり、ファイルをダウンロードしたりするのに便利です。
基本的なcURLの使い方
まずは最も基本的なコマンドから始めましょう。
1. URLのデータ取得
curl https://example.com
- 動作: 指定したURLのデータを取得して、ターミナルに出力します。
- 例: ウェブページのHTMLコードを確認。
2. ファイルのダウンロード
curl -O https://example.com/file.zip
-
-O
: URLから取得したファイルをそのまま保存します。
3. ファイル名を指定して保存
curl -o custom_name.zip https://example.com/file.zip
-
-o
: 保存時に任意のファイル名を指定。
進んだ使い方: Web APIとcURL
APIを使う際に、GETやPOSTリクエストを送信します。
1. GETリクエスト
curl -X GET https://api.example.com/data
-
-X GET
: 明示的にGETリクエストを指定(省略可能)。 - 例: APIからデータを取得。
2. POSTリクエスト
curl -X POST -d "key=value&key2=value2" https://api.example.com/data
-
-d
: データ(フォームのような形式)を送信。 - 例: ユーザー情報の登録。
3. JSON形式のデータ送信
curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' https://api.example.com/data
-
-H
: ヘッダー情報を指定。Content-Type: application/json
はJSONデータ送信時に必須。 - 例: Web APIにJSON形式のリクエストを送信。
4. ヘッダー情報の取得
curl -I https://example.com
-
-I
: ヘッダー情報のみを取得。
5. 認証付きリクエスト
curl -u username:password https://api.example.com/data
-
-u
: ユーザー名とパスワードを指定(Basic認証)。
実用的なcURLの例
1. REST APIを使ったデータ取得
curl -X GET -H "Authorization: Bearer YOUR_TOKEN" https://api.example.com/data
-
Authorization: Bearer
: APIトークン認証でよく使う形式。
2. ファイルをアップロード
curl -X POST -F "file=@path/to/yourfile.jpg" https://example.com/upload
-
-F
: ファイルをフォームデータとして送信。
3. リクエストとレスポンスをログに出力
curl -v https://example.com
-
-v
: 詳細なログ(通信内容)を表示。
エラーとデバッグ
-
--fail
: エラー時にエラーメッセージを出力。 -
-w
: リクエスト時間やHTTPステータスを表示。 -
--retry
: 接続失敗時に再試行。
例: 失敗時に3回までリトライ
curl --retry 3 https://example.com
cURLをマスターするための学習ステップ
-
基本コマンドの理解
- GET、POST、ヘッダーの取得など。
-
オプションの組み合わせ
-
-d
や-H
を組み合わせて、複雑なリクエストを試す。
-
-
APIのテスト
- 公開API(例: JSONPlaceholder)で練習。
-
スクリプトでの自動化
- シェルスクリプトに組み込んで実行(ループや条件分岐を追加)。
-
ログとエラー管理
-
-v
や--fail
を使い、エラー時の挙動を把握。
-
学んだcURLをスクリプトに活用する例
シェルスクリプトでAPIにデータを送信
#!/bin/bash
API_URL="https://api.example.com/data"
AUTH_TOKEN="YOUR_TOKEN"
# GETリクエスト
curl -X GET -H "Authorization: Bearer $AUTH_TOKEN" $API_URL
# POSTリクエスト
curl -X POST -H "Authorization: Bearer $AUTH_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"test_user","email":"test@example.com"}' $API_URL
さらなるステップ
-
HTTP/HTTPS以外のプロトコルを試す
cURLはFTPやSFTP、LDAPなどさまざまなプロトコルに対応。 -
cURLの公式ドキュメントを参照
cURL公式ページでオプションの詳細を確認。 -
Postmanとの比較を考える
GUIツールのPostmanでAPIをテストし、cURLにエクスポートして学習を補完。
必要に応じてコードの詳細や応用例をお伝えします!