LESSON 30分

curlでHTTPリクエストを送ろう

ストーリー

「先輩、HTTPリクエストを実際に送る方法はありますか?ブラウザ以外で」

「curl というコマンドがあるよ。ターミナルからHTTPリクエストを送れるんだ」

「ターミナルからWebにアクセスできるんですか!」

「そう。エンジニアがAPIのテストやデバッグによく使う必須ツールだよ」


curl とは

一言で言うと

ターミナルからHTTPリクエストを送受信するコマンドラインツール

curl = Client URL

  • ほぼすべてのLinux/Macに標準搭載
  • Windowsでも利用可能
  • APIのテストやデバッグに必須

基本的な使い方

GETリクエスト(最もシンプル)

bash
curl https://httpbin.org/get

URLを指定するだけで、GETリクエストが送られます。

出力例:

json
{
  "args": {},
  "headers": {
    "Accept": "*/*",
    "Host": "httpbin.org",
    "User-Agent": "curl/7.81.0"
  },
  "origin": "203.0.113.1",
  "url": "https://httpbin.org/get"
}

httpbin.org は、HTTPリクエストのテスト用サービスです。送ったリクエストの内容をそのまま返してくれます。


よく使うオプション

-v(詳細表示 / verbose)

リクエストとレスポンスの詳細を表示します。

bash
curl -v https://httpbin.org/get

出力例(一部):

> GET /get HTTP/2
> Host: httpbin.org
> User-Agent: curl/7.81.0
> Accept: */*
>
< HTTP/2 200
< content-type: application/json
< content-length: 256
<
{...}
  • > で始まる行 = 送信したリクエスト
  • < で始まる行 = 受信したレスポンス
  • ステータスコード、ヘッダーが確認できる

-o(ファイルに保存)

レスポンスをファイルに保存します。

bash
curl -o output.html https://www.example.com

-I(ヘッダーのみ取得)

レスポンスのヘッダーだけを取得します(ボディなし)。

bash
curl -I https://www.example.com

出力例:

HTTP/2 200
content-type: text/html; charset=UTF-8
content-length: 1256

HTTPメソッドの指定

-X オプション

bash
# GETリクエスト(デフォルト)
curl https://httpbin.org/get

# POSTリクエスト
curl -X POST https://httpbin.org/post

# PUTリクエスト
curl -X PUT https://httpbin.org/put

# DELETEリクエスト
curl -X DELETE https://httpbin.org/delete

ヘッダーの指定

-H オプション

bash
curl -H "Content-Type: application/json" https://httpbin.org/get

複数のヘッダーを指定する場合:

bash
curl -H "Content-Type: application/json" \
     -H "Authorization: Bearer mytoken123" \
     https://httpbin.org/get

データの送信

-d オプション(POSTデータ)

bash
# フォームデータを送信
curl -X POST -d "name=tanaka&age=25" https://httpbin.org/post

# JSONデータを送信
curl -X POST \
     -H "Content-Type: application/json" \
     -d '{"name": "tanaka", "age": 25}' \
     https://httpbin.org/post

出力例:

json
{
  "data": "{\"name\": \"tanaka\", \"age\": 25}",
  "headers": {
    "Content-Type": "application/json"
  },
  "json": {
    "name": "tanaka",
    "age": 25
  }
}

よく使うパターン集

Webページの内容を取得

bash
curl https://www.example.com

APIからJSONデータを取得

bash
curl https://httpbin.org/json

レスポンスのステータスコードだけを確認

bash
curl -o /dev/null -s -w "%{http_code}" https://www.example.com

出力:200

リダイレクトを追跡

bash
curl -L http://github.com

-L オプションで、3xx リダイレクトを自動的に追跡します。


curl オプション早見表

オプション説明
-v詳細表示curl -v URL
-Iヘッダーのみcurl -I URL
-oファイルに保存curl -o file.html URL
-Xメソッド指定curl -X POST URL
-Hヘッダー追加curl -H "Key: Value" URL
-dデータ送信curl -d "data" URL
-Lリダイレクト追跡curl -L URL
-s進捗非表示curl -s URL

まとめ

ポイント内容
curlターミナルからHTTPリクエストを送るツール
基本形curl URL でGETリクエスト
-v詳細なリクエスト/レスポンスを表示
-XHTTPメソッドを指定(POST, PUT, DELETE)
-Hヘッダーを追加
-dデータを送信

チェックリスト

  • curl の基本的な使い方(curl URL)が分かる
  • -v オプションで詳細を確認できる
  • -X でHTTPメソッドを指定できる
  • -d でデータを送信する方法を知っている

次のステップへ

curl の基本が分かりましたね。

次は演習です。curl を使って実際にさまざまなHTTPリクエストを送ってみましょう。


推定読了時間: 30分