GET
GETはリソースを取得するためのメソッドで、curl
のデフォルト動作です。メソッドを明示的に指定する必要はありません。クエリパラメータを付けてリクエストする場合は、URL全体を引用符("
)で囲むのが一般的のようです。
# クエリパラメータを付けてユーザーリストを取得
curl "https://api.example.com/users?page=1&limit=10"
POST
新しいリソースを作成するPOSTリクエストですが、-Xオプションでメソッドを指定し、-dオプションで送信するデータ(body)を指定します。
Webフォームのようなデータを送信する場合は、次のように記述します。このときContent-Type
はapplication/x-www-form-urlencoded
として扱われます。
# formデータをPOST
curl -X POST -d "name=山田&[email protected]" https://api.example.com/users
JSON形式のデータを送信する場合は、-HオプションでContent-Type
ヘッダーをapplication/json
に指定することが重要です。
# JSONデータをPOST
curl -X POST \
-H "Content-Type: application/json" \
-d '{"name":"山田","email":"[email protected]"}' \
https://api.example.com/users
PUT / PATCH
既存のリソースを更新する際は、PUT(全体更新)またはPATCH(部分更新)を使用します。基本的な構文はPOSTと似ており、-XオプションでHTTPメソッドを指定します。
# IDが123のユーザー情報を更新 (PUT)
curl -X PUT \
-H "Content-Type: application/json" \
-d '{"name":"山田太郎","email":"[email protected]"}' \
https://api.example.com/users/123
DELETE
リソースを削除するDELETEリクエストですが、-X DELETEでメソッドを指定します。通常、bodyは含みません。
# IDが123のユーザーを削除
curl -X DELETE https://api.example.com/users/123
JSONレスポンスの整形
APIのレスポンスはJSON形式であることが多いですが、ターミナル上では一行で表示されて読みにくい場合があります。このような時、jq
というコマンドラインツールとパイプ(|
)で組み合わせると、レスポンスを整形して表示できます。curl
に**-s**(サイレントモード)を付けると、進捗表示が消えて純粋なJSONデータだけをjq
に渡せるため便利です。
# APIのレスポンスをjqで整形して表示
curl -s "https://api.example.com/users" | jq .