LinuxのターミナルでWebサーバーにアクセスしたり、APIを試したいと思ったことはありませんか?
そんな時に便利なのが「curl(カール)」コマンドです。
curlはHTTPリクエストを簡単に送信できるツールで、Web開発やサーバー運用、APIの動作確認など、さまざまな場面で役立ちます。
この記事では、curlの基本的な使い方から、GET、POST、PUT、DELETEといった主要なHTTPメソッドの利用方法、さらにはJSON送信やファイルアップロードといった実践的な操作まで、わかりやすく解説します。
LinuxユーザーやWeb開発初心者の方でも理解できるよう、例を交えて丁寧に紹介しますので、ぜひ最後までご覧ください。
curl(Client URL)は、コマンドラインからURLを操作できるツールです。
特にHTTPリクエストの送信に優れており、APIのテストやWebページのデータ取得、ファイルのダウンロード・アップロードなどが可能です。
主な特徴としては以下の点が挙げられます。
もっともシンプルなcurlの使い方は、Webページの内容を取得する「GET」リクエストです。
curl https://example.com
このコマンドを実行すると、指定したURLのHTMLコンテンツがターミナルに表示されます。
内容をファイルに保存したい場合は、リダイレクトを使います。
curl https://example.com > index.html
または-o
オプションで指定可能です。
curl -o index.html https://example.com
サーバーから返されるレスポンスヘッダーを見るには、-i
オプションを使います。
curl -i https://example.com
レスポンス全体を詳しく確認したい場合は、-v
(verbose)を付けると通信の詳細が表示されます。
curl -v https://example.com
フォームデータなどを送信したいときは、-X POST
と-d
オプションを使います。
curl -X POST -d "username=test&password=1234" https://example.com/login
この例では、フォーム形式のデータをPOSTしています。
JSON形式のデータを送信する場合は、-H
でContent-Typeヘッダーを指定し、-d
でJSON文字列を送ります。
curl -X POST -H "Content-Type: application/json" \
-d '{"name": "Taro", "email": "taro@example.com"}' \
https://example.com/api/user
APIではリソースの更新や削除にPUTやDELETEメソッドを使うことがあります。curlでは-X
オプションで任意のHTTPメソッドを指定できます。
curl -X PUT -H "Content-Type: application/json" \
-d '{"email": "taro_new@example.com"}' \
https://example.com/api/user/123
curl -X DELETE https://example.com/api/user/123
APIキーなどをヘッダーで送信する場合には、-H
オプションを複数使うことができます。
curl -H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json" \
https://example.com/api/data
ヘッダーは複数指定が可能で、1つのリクエストにまとめて送ることができます。
ファイルをサーバーにアップロードしたい場合は、-F
オプションを使用します。
これは、multipart/form-data形式のリクエストになります。
curl -F "file=@/path/to/file.txt" https://example.com/upload
フォームの名前(この例ではfile
)は、サーバー側の処理に合わせて設定してください。
curlはダウンロード機能も備えています。単純なダウンロードは以下の通りです。
curl -O https://example.com/file.zip
途中で中断されたダウンロードを再開するには、-C -
オプションを使います。
curl -C - -O https://example.com/file.zip
ユーザー名とパスワードによる基本認証が必要なサイトには、-u
オプションを使います。
curl -u username:password https://example.com/protected
セキュリティ上、パスワードをコマンドラインにそのまま書くのは推奨されません。スクリプト内で使う際は注意が必要です。
curlはHTTPやHTTPSプロキシを通してリクエストを送ることも可能です。
curl -x http://proxy.example.com:8080 https://example.com
必要に応じて、プロキシ認証も設定できます。
curl -x http://proxy.example.com:8080 \
-U user:password \
https://example.com
SSLの検証エラーが起こる場合、自己署名証明書などを使用している可能性があります。
検証をスキップしたい場合は以下のようにします(ただし非推奨です)。
curl -k https://self-signed.example.com
オプション | 内容 |
---|---|
-X | HTTPメソッドの指定(GET, POST, PUT, DELETEなど) |
-d | データの送信(POSTやPUTで使用) |
-H | HTTPヘッダーの追加 |
-F | ファイルアップロード |
-o | 出力ファイルの指定 |
-O | ファイル名を自動取得して保存 |
-i | レスポンスヘッダーの表示 |
-v | 詳細な通信ログの表示 |
-u | ベーシック認証の設定 |
-x | プロキシの設定 |
curlは非常にパワフルで柔軟なコマンドラインツールです。
Web開発、API検証、サーバー管理など、さまざまな用途に対応できるため、使い方をマスターすれば大きな武器になります。
初心者の方はまず基本のGET、POSTから試し、徐々にPUTやDELETE、ファイルアップロードや認証付きアクセスへとステップアップしていくと良いでしょう。