imu-note
いむたろ
いむたろ
@imutaroh
新卒エンジニア / データ基盤 × AI

What

curl はターミナルから HTTP リクエストを1回送るコマンド。 API の実験台として使う。ブラウザと違って、GET 以外のメソッドを送れて、ヘッダを自由に付けられて、送受信の中身を丸ごと目で見られる。

構造 — 3つの部品しかない

curl -H "Authorization: Bearer eyJhbGci..." https://api.github.com/user
└┬─┘ └──────────────┬──────────────────┘ └──────────┬─────────┘
コマンド名        オプション(0個以上)              URL(宛先)

オプションは - で始まり、直後の値とセットで読む。上の例は「ヘッダを1本付けて GET した」だけ。

行末の \ は curl のオプションではなく、改行を打ち消すシェルの記号。2行に折り返しても、1行に繋げて書いたのとまったく同じ意味になる

How — 覚えるのは6個

オプション意味
(なし)GET を送る
-Hヘッダを1本足す
-Xメソッドを指定する
-dボディを送る
-iレスポンスのヘッダも表示
-v送受信の全文を表示(> が自分、< がサーバー)
# 認証トークンを付けて GET
curl -H "Authorization: Bearer ghp_xxxx" https://api.github.com/user

# JSON を POST(4点セットが全部そろった形)
curl -X POST \
     -H "Content-Type: application/json" \
     -d '{"title":"バグ報告"}' \
     https://api.github.com/repos/owner/repo/issues

curl の行を読むときは、メソッド・パス・ヘッダ・ボディのどれを指定しているかに分解すればいい。

落とし穴

  • -d を書くと自動で POST になるので -X POST は省ける。PUT や PATCH のときだけ -X が要る
  • URL とヘッダの値は必ず引用符で囲む。クエリの & を囲まないと、シェルがそこで切ってバックグラウンド実行になる

関連