やりたかったこと

コマンドラインからHTTPリクエストを送りたかった。 curlを使うとAPIのテストやファイルのダウンロードができる。

環境

  • Linux / Mac / Windows(Git Bash)

基本的な使い方

GETリクエスト

curl https://example.com
curl -s https://example.com    # 進捗を非表示
curl -o output.html https://example.com  # ファイルに保存

POSTリクエスト

curl -X POST https://api.example.com/data \
  -H "Content-Type: application/json" \
  -d '{"key": "value"}'

ヘッダーを確認する

curl -I https://example.com    # ヘッダーのみ表示
curl -v https://example.com    # 詳細表示

認証付きリクエスト

curl -H "Authorization: Bearer トークン" https://api.example.com

APIテストでよく使うオプション

-X GET/POST/PUT/DELETE   # HTTPメソッドを指定
-H "ヘッダー名: 値"      # ヘッダーを追加
-d "データ"              # リクエストボディ
-o ファイル名            # レスポンスをファイルに保存
-s                       # サイレントモード
-v                       # 詳細表示
-L                       # リダイレクトに従う

ハマったポイント

  • Windowsのコマンドプロンプトではシングルクォートが使えない。Git Bashを使う
  • -s-o を組み合わせると進捗なしでファイルに保存できる
  • JSONを整形して表示するには | python3 -m json.tool をパイプで繋ぐ

関連記事