こんにちは、さるまりんです🐒
今回は開発現場で定番のcurl
を使って、APIを手軽に叩いて確認する方法です。
「curl
でGET
」「POST
のJSONどう送るの?」のようなことをメモとして残しています。
レスポンスをファイルに保存してログ解析に活用する方法も。
基本の使い方:GETリクエスト
curl https://example.com/api/users
シンプルにAPIのエンドポイントにアクセスします。
JSONを送る:POSTリクエスト
curl -X POST https://example.com/api/login \
-H "Content-Type: application/json" \
-d '{"email":"test@example.com", "password":"secret"}'
-X POST
:POST
メソッドで送る-H
: ヘッダー指定(JSON送信では必須)-d
: データ本文
認証付きAPIの呼び出し(Bearer Token)
curl -H "Authorization: Bearer YOUR_TOKEN_HERE" https://example.com/api/profile
トークンベースの認証を利用しているAPI(Laravel Sanctum、Spring Security など)でよく使います。
レスポンスを保存したいとき
curl -o response.json https://example.com/api/data
-o
: レスポンスをファイルに出力(標準出力には表示されません)
cat response.json | jq '.'
jq
を使うと、JSON形式をきれいに整形表示できます(Homebrewでbrew install jq
はインストールできます。)
処理時間やレスポンスヘッダーも確認したいとき
curl -w "\nTime: %{time_total}s\n" -I -s https://example.com/api/status
-I
: ヘッダーのみ表示-w
: フォーマット指定で時間やステータスなどを出力-s
: 進捗などを非表示にして静かに出力
よく使うコマンド(コピーしてすぐ使えます)
POST + JSON + トークン付き
curl -X POST https://api.example.com/data \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d @payload.json
ファイル出力+整形表示
curl -s -o log.json https://api.example.com/log && cat log.json | jq '.'
ログ解析やテストデータ確認に
実際のAPIの開発やテストで、curlを使って得たレスポンスをログとして残しておくことで:
- 時系列で処理内容を追える
- 異常系・エラー系レスポンスを保存して後で再現・比較できる
- テストの自動化前の手動確認フェーズで使えます
curl -s https://api.example.com/debug > logs/$(date +%Y%m%d-%H%M%S).json
まとめです
シーン 別curlオプション例 です。
GETするだけ : curl https://example.com/api
JSONでPOST : -X POST -H 'Content-Type: application/json' -d '{...}'
認証付きAPI : -H 'Authorization: Bearer ...'
レスポンス保存 : -o response.json
時間やヘッダー確認 : -w
, -I
, -s
API開発時に使うけどいろんなことできない状態でやっていたので、これを覚えて使い倒してみようと思います。
今後はcurl
で取得したログをもとに、エラーケースの検証やテストデータとしての再活用もできたらいいなと思っています。
読んでくださってありがとうございました。
それではまた!