Categories: linux

curlコマンドの基本と使い方を徹底解説!LinuxでHTTPリクエストを送る方法

LinuxのターミナルでWebサーバーにアクセスしたり、APIを試したいと思ったことはありませんか?
そんな時に便利なのが「curl(カール)」コマンドです。
curlはHTTPリクエストを簡単に送信できるツールで、Web開発やサーバー運用、APIの動作確認など、さまざまな場面で役立ちます。

この記事では、curlの基本的な使い方から、GET、POST、PUT、DELETEといった主要なHTTPメソッドの利用方法、さらにはJSON送信やファイルアップロードといった実践的な操作まで、わかりやすく解説します。

LinuxユーザーやWeb開発初心者の方でも理解できるよう、例を交えて丁寧に紹介しますので、ぜひ最後までご覧ください。


curlとは何か?

curl(Client URL)は、コマンドラインからURLを操作できるツールです。
特にHTTPリクエストの送信に優れており、APIのテストやWebページのデータ取得、ファイルのダウンロード・アップロードなどが可能です。

主な特徴としては以下の点が挙げられます。

  • 軽量で高速
  • 多くのプロトコルに対応(HTTP、HTTPS、FTPなど)
  • スクリプトからの利用が容易
  • 標準で多くのLinuxディストリビューションにインストールされている

基本的な使い方(GETリクエスト)

もっともシンプルなcurlの使い方は、Webページの内容を取得する「GET」リクエストです。

curl https://example.com

このコマンドを実行すると、指定したURLのHTMLコンテンツがターミナルに表示されます。

内容をファイルに保存したい場合は、リダイレクトを使います。

curl https://example.com > index.html

または-oオプションで指定可能です。

curl -o index.html https://example.com

HTTPヘッダーを表示する

サーバーから返されるレスポンスヘッダーを見るには、-iオプションを使います。

curl -i https://example.com

レスポンス全体を詳しく確認したい場合は、-v(verbose)を付けると通信の詳細が表示されます。

curl -v https://example.com

POSTリクエストを送信する

フォームデータなどを送信したいときは、-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

PUTやDELETEの使い方

APIではリソースの更新や削除にPUTやDELETEメソッドを使うことがあります。curlでは-Xオプションで任意のHTTPメソッドを指定できます。

PUTの例(データ更新)

curl -X PUT -H "Content-Type: application/json" \
-d '{"email": "taro_new@example.com"}' \
https://example.com/api/user/123

DELETEの例(リソース削除)

curl -X DELETE https://example.com/api/user/123

HTTPリクエストにヘッダーを追加する

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証明書の確認やバイパス

SSLの検証エラーが起こる場合、自己署名証明書などを使用している可能性があります。
検証をスキップしたい場合は以下のようにします(ただし非推奨です)。

curl -k https://self-signed.example.com

よく使うオプションまとめ

オプション内容
-XHTTPメソッドの指定(GET, POST, PUT, DELETEなど)
-dデータの送信(POSTやPUTで使用)
-HHTTPヘッダーの追加
-Fファイルアップロード
-o出力ファイルの指定
-Oファイル名を自動取得して保存
-iレスポンスヘッダーの表示
-v詳細な通信ログの表示
-uベーシック認証の設定
-xプロキシの設定

まとめ

curlは非常にパワフルで柔軟なコマンドラインツールです。
Web開発、API検証、サーバー管理など、さまざまな用途に対応できるため、使い方をマスターすれば大きな武器になります。

初心者の方はまず基本のGET、POSTから試し、徐々にPUTやDELETE、ファイルアップロードや認証付きアクセスへとステップアップしていくと良いでしょう。

upandup

Web制作の記事を中心に、暮らし、ビジネスに役立つ情報を発信します。 アフィリエイトにも参加しています。よろしくお願いいたします。