ネットワーク・通信

Linux curlコマンド入門|HTTPリクエストとAPI操作

Linux curl ネットワーク

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よく使うオプション一覧

オプション説明
-XHTTPメソッドを指定
-Hヘッダーを追加
-dリクエストボディを送信
-Fフォームデータ(ファイル送信)
-o出力ファイルを指定
-OURLのファイル名で保存
-iレスポンスヘッダーも表示
-Iヘッダーのみ取得(HEADリクエスト)
-sサイレントモード(進捗非表示)
-Lリダイレクトに追従
-kSSL証明書の検証をスキップ
-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証明書の検証をスキップします。本番環境では絶対に使わないでください。