【完全解説】curlコマンドの基本から実務で使える実践テクニックまで

Laravel

Web APIのテストやデータ取得、ファイルダウンロードなど、開発や運用インフラの現場で頻繁に使われるcurl(カール)コマンド。

この記事では、curlの基本概念から主要なオプション、実務で役立つ具体的なコマンド例までを体系的に解説します。

1. curlとは?

curl(Client URL)は、コマンドラインから各種プロトコル(HTTP, HTTPS, FTP, SFTPなど)を利用してデータの送受信を行うためのオープンソースツールです。

  • マルチプラットフォーム対応: Linux、macOS、Windowsの主要OSに標準搭載(または容易にインストール可能)。
  • Web API検証の標準: 認証付きリクエストやリクエストヘッダーのカスタマイズが容易で、API動作テストのデファクトスタンダード。
  • 自動化に適している: シェルスクリプトやCI/CDパイプラインに組み込んで処理を自動化可能。

2. 基本的なリクエスト手法

HTTP GET リクエスト

オプションなしでURLを指定すると、デフォルトでGETリクエストが送信されます。

Bash
curl https://api.example.com/users

HTTP POST リクエスト(JSONデータの送信)

-X POST でメソッドを指定し、-H で Content-Type、-d で送信データを渡します。

Bash
curl -X POST https://api.example.com/users \
  -H "Content-Type: application/json" \
  -d '{"name": "Taro", "role": "developer"}'

3. 実務でよく使われる主要オプション一覧

オプション短縮形用途・解説
--request-XHTTPメソッド(GET, POST, PUT, DELETE等)を明示指定
--header-Hリクエストヘッダー(認証情報やContent-Type等)を追加
--data-d送信データ(POST/PUTのペイロード)を指定
--include-iレスポンスヘッダーも本文と一緒に表示
--verbose-v送受信の全詳細(ハンドシェイク、ヘッダー等)をデバッグ表示
--output-o取得データを指定したファイル名で保存
--location-L301/302などのリダイレクトを自動追跡
--silent-sプログレスメーターやエラー表示を非表示にする

4. 実践的なユースケース

API認証(Bearer Token)を伴うリクエスト

APIキーやアクセストークンを Authorization ヘッダーにセットしてアクセスします。

Bash
curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  https://api.example.com/v1/me

表示例:

JSON
{
  "id": "usr_99823",
  "name": "Taro Yamada",
  "email": "[email protected]",
  "status": "active"
}

ファイルのダウンロード

-o(小文字)で出力ファイル名を指定してダウンロードします。

Bash
curl -o file.zip https://example.com/downloads/file.zip

表示例:

Plaintext
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 15.2M  100 15.2M    0     0  3850k      0  0:00:04  0:00:04 --:--:-- 3852k

詳細ログ(デバッグ)の確認

接続エラーやHTTPステータスコードの原因調査には -v オプションが有効です。

Bash
curl -v https://api.example.com/healthcheck

表示例:

Plaintext
*   Trying 192.0.2.1:443...
* Connected to api.example.com (192.0.2.1) port 443
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
> GET /healthcheck HTTP/1.1
> Host: api.example.com
> User-Agent: curl/8.4.0
> Accept: */*
> 
< HTTP/1.1 200 OK
< Date: Sun, 16 Aug 2026 01:24:22 GMT
< Content-Type: application/json
< Content-Length: 18
< 
* Connection #0 to host api.example.com left intact
{"status":"ok"}

まとめ

curl コマンドは、単なるWebページの取得にとどまらず、API開発やトラブルシューティングにおいて必須のツールです。

まずは基本的な GET / POST リクエストと、-i(ヘッダー確認)-v(詳細表示) オプションを抑えておくことで、日常の開発・運用効率を大きく向上させることができます。

コメント