curlでAPIを叩く!ちょっと便利な使い方も

こんにちは、さるまりんです🐒

今回は開発現場で定番のcurlを使って、APIを手軽に叩いて確認する方法です。

curlGET」「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で取得したログをもとに、エラーケースの検証やテストデータとしての再活用もできたらいいなと思っています。

読んでくださってありがとうございました。

それではまた!