Linux curlコマンド入門
HTTPリクエストとAPI操作
curlは、コマンドラインからHTTPリクエストを送信できるツールです。APIのテスト、ファイルのダウンロード・アップロード、Webサービスとの連携に幅広く使われます。
こんな人向けの記事です
- コマンドラインからAPIをテストしたい人
- HTTPリクエストの送信方法を学びたい人
- Web開発でcurlを使いこなしたい人
Step 1curlの基本的な使い方
curlにURLを指定すると、そのURLのコンテンツを取得して標準出力に表示します。
ターミナル
# Webページの内容を取得
curl https://example.com
# ファイルとして保存
curl -o output.html https://example.com
# URLのファイル名で保存
curl -O https://example.com/file.tar.gz
# レスポンスヘッダーも表示
curl -i https://example.com
Step 2HTTPメソッドの指定
REST APIを操作するには、HTTPメソッドを指定します。
ターミナル
# GET(デフォルト)
curl https://api.example.com/users
# POST
curl -X POST https://api.example.com/users
# PUT
curl -X PUT https://api.example.com/users/1
# DELETE
curl -X DELETE https://api.example.com/users/1
Step 3ヘッダーとデータの送信
APIリクエストでは、ヘッダーとリクエストボディを指定することが多いです。
ターミナル
# JSONデータをPOST
curl -X POST https://api.example.com/users -H "Content-Type: application/json" -d '{"name": "Alice", "email": "alice@example.com"}'
# 認証トークンを付与
curl -H "Authorization: Bearer YOUR_TOKEN" https://api.example.com/me
# フォームデータを送信
curl -X POST https://example.com/login -d "username=alice&password=secret"
# ファイルをアップロード
curl -X POST https://example.com/upload -F "file=@/path/to/file.pdf"
-d と -F の違い
-d:application/x-www-form-urlencoded 形式でデータを送信-F:multipart/form-data 形式で送信(ファイルアップロード用)
Step 4レスポンスの制御
レスポンスの表示方法をカスタマイズできます。
ターミナル
# HTTPステータスコードだけ取得
curl -s -o /dev/null -w "%{http_code}" https://example.com
# レスポンスヘッダーだけ表示
curl -I https://example.com
# 進捗バーを非表示(スクリプト用)
curl -s https://api.example.com/data
# レスポンスをjqで整形(JSONの場合)
curl -s https://api.example.com/users | jq .
Step 5よく使うオプション一覧
| オプション | 説明 |
|---|---|
-X | HTTPメソッドを指定 |
-H | ヘッダーを追加 |
-d | リクエストボディを送信 |
-F | フォームデータ(ファイル送信) |
-o | 出力ファイルを指定 |
-O | URLのファイル名で保存 |
-i | レスポンスヘッダーも表示 |
-I | ヘッダーのみ取得(HEADリクエスト) |
-s | サイレントモード(進捗非表示) |
-L | リダイレクトに追従 |
-k | SSL証明書の検証をスキップ |
-v | 詳細なデバッグ情報を表示 |
Step 6実践的な活用例
実務でよく使うcurlのパターンです。
ターミナル
# Webサイトの死活監視
curl -s -o /dev/null -w "%{http_code}" https://example.com
# APIのレスポンスタイム計測
curl -s -o /dev/null -w "Time: %{time_total}s
" https://api.example.com
# GitHub APIの例
curl -s -H "Authorization: token YOUR_TOKEN" https://api.github.com/user | jq .login
# 自分のグローバルIPを確認
curl -s ifconfig.me
-k オプションは開発環境のみ
-k(--insecure)はSSL証明書の検証をスキップします。本番環境では絶対に使わないでください。