📚

curl コマンドの基本

2024/09/18に公開

はじめに

このページでは、curl コマンドについて記述します。

curl コマンドとは?

curl(Client URL)は、コマンドラインからHTTPリクエストを送信するためのツールです。URLを指定してデータを取得したり、データを送信したりすることができます。curlはHTTPだけでなく、FTPやSMTPなどの他のプロトコルもサポートしています。

インストール方法

多くのLinuxディストリビューションやmacOSにはcurlが標準でインストールされています。インストールされていない場合は、以下のコマンドでインストールできます。

Ubuntu/Debian系:

sudo apt update
sudo apt install curl

CentOS/RHEL系:

sudo yum install curl

macOS (Homebrewを使用):

brew install curl

基本的な使い方

1. HTTPリクエストを使用してデータを取得する

curlの最も基本的な使い方は、URLを指定してデータを取得することです。

curl http://example.com

上記のコマンドは、http://example.comからデータを取得し、標準出力に表示します。

2. レスポンスをファイルに保存する

-o オプションを使用して、レスポンスをファイルに保存することができます。

curl -o output.html http://example.com

このコマンドは、example.comのHTMLコンテンツをoutput.htmlという名前のファイルに保存します。

3. リクエストヘッダーを表示する

-I オプションを使用すると、サーバーのレスポンスヘッダーのみを表示できます。

curl -I http://example.com

このコマンドは、HTTPヘッダー情報(ステータスコード、コンテンツタイプなど)を表示します。

4. POSTリクエストを送信する

1. POSTリクエストの基本

-X POST オプションを使用すると、POSTリクエストを送信できます。データを送信するには、-d オプションを使用します。

curl -X POST -d "name=John&age=25" http://example.com/post

このコマンドは、nameageというデータをPOSTメソッドでhttp://example.com/postに送信します。

2. JSON形式のリクエストボディを使用したPOSTリクエスト

APIへのリクエストでは、JSON形式のデータを送信することが一般的です。その場合、-Hオプションを使用してContent-Typeヘッダーを指定し、-dオプションでJSONデータを送信します。

curl -X POST -H "Content-Type: application/json" -d '{"name": "John", "age": 25}' http://example.com/post

このコマンドは、{"name": "John", "age": 25}というJSONデータをhttp://example.com/postに対してPOSTリクエストとして送信します。Content-Type: application/jsonヘッダーを指定することで、サーバーにJSONデータとして処理するよう指示しています。

3. ファイルを使用したリクエストボディの送信

リクエストボディの内容が多い場合や複雑な場合、-dオプションの代わりにファイルを使用してデータを送信することができます。以下の例では、data.jsonというファイルの内容をリクエストボディとして送信します。

まず、data.jsonというファイルを作成し、以下のような内容を記述します:

{
  "name": "John",
  "age": 25
}

次に、curlコマンドでそのファイルを読み込み、POSTリクエストを送信します。

curl -X POST -H "Content-Type: application/json" -d @data.json http://example.com/post

このコマンドは、data.jsonファイルの内容を読み込み、http://example.com/postに対してJSONデータとして送信します。

よく使われるオプションのまとめ

オプション 説明
-o 出力をファイルに保存
-O リモートファイル名を使用して保存
-I ヘッダーのみを表示
-X リクエストメソッドの指定
-d POSTリクエストで送信するデータ
-H リクエストヘッダーの追加
-u ユーザー名とパスワードの指定
-L リダイレクトを追跡

詳細なオプションと使用方法については、公式ドキュメントを参照してください: curl公式ドキュメント

コマンドの比較

curlと同様にHTTPリクエストを行うツールとしては、wgetがあります。

curl vs wget

  • curl:
    • デフォルトでは標準出力に出力される。
    • HTTPヘッダーの表示や、POSTリクエストの送信、プロトコルのサポートが豊富。
    • URLのリクエストだけでなく、APIテストや複雑なデータの送信も可能。
  • wget:
    • デフォルトでファイルをダウンロードする。
    • 再帰的なダウンロードが可能。
    • 一般的にwgetは単純なファイルのダウンロードに向いている。

まとめ

curlは、HTTPリクエストを行うための非常に強力で柔軟なコマンドラインツールです。ファイルのダウンロードからAPIのテストまで幅広い用途で使用されます。他のツールと比較しても、多機能でプロトコルのサポートも豊富です。curlを使いこなすことで、様々なネットワーク操作がより簡単になります。

Discussion