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/usersJSON形式のデータを送信する場合は、-HオプションでContent-Typeヘッダーをapplication/jsonに指定することが重要です。
# JSONデータをPOST
curl -X POST \
  -H "Content-Type: application/json" \
  -d '{"name":"山田","email":"[email protected]"}' \
  https://api.example.com/usersPUT / 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/123DELETE
リソースを削除するDELETEリクエストですが、-X DELETEでメソッドを指定します。通常、bodyは含みません。
# IDが123のユーザーを削除
curl -X DELETE https://api.example.com/users/123JSONレスポンスの整形
APIのレスポンスはJSON形式であることが多いですが、ターミナル上では一行で表示されて読みにくい場合があります。このような時、jqというコマンドラインツールとパイプ(|)で組み合わせると、レスポンスを整形して表示できます。curlに**-s**(サイレントモード)を付けると、進捗表示が消えて純粋なJSONデータだけをjqに渡せるため便利です。
# APIのレスポンスをjqで整形して表示
curl -s "https://api.example.com/users" | jq .