[コマンドプロンプト] curlコマンドの使い方 – HTTP通信を行う
curlコマンドは、コマンドプロンプトやターミナルでHTTP通信を行うためのツールです。
主にURLに対してリクエストを送信し、レスポンスを取得するために使用されます。
基本的な使い方は curl [URL]
で、指定したURLにGETリクエストを送信します。
POSTリクエストを送信する場合は「curl -X POST [URL] -d "[データ]"
」のように使用します。
オプションを使うことで、ヘッダーの指定やファイルのダウンロードなども可能です。
- curlコマンドの基本的な使い方
- HTTPリクエストの種類と送信方法
- APIとの連携方法とデータ送信
- ファイルのダウンロードとアップロード
- curlのオプションによるカスタマイズ方法
curlコマンドとは
curlコマンドは、URLを介してデータを転送するためのコマンドラインツールです。
主にHTTP、HTTPS、FTPなどのプロトコルを使用して、リモートサーバーとの通信を行います。
curlは、さまざまなオプションを提供しており、リクエストの種類やヘッダー情報、データの送信方法などを柔軟に指定できます。
これにより、APIとの連携やファイルのダウンロード・アップロードが簡単に行えるため、開発者やシステム管理者にとって非常に便利なツールです。
特に、スクリプトや自動化されたタスクでの利用が多く、シンプルなコマンドで強力な機能を発揮します。
curlは、Windowsだけでなく、LinuxやmacOSなどの多くのプラットフォームで利用可能です。
HTTPリクエストの種類とcurlコマンド
HTTPリクエストは、クライアントがサーバーにデータを要求するための手段です。
curlコマンドを使用することで、さまざまな種類のHTTPリクエストを簡単に送信できます。
以下に、主要なリクエストの送信方法を示します。
GETリクエストの送信方法
GETリクエストは、指定したURLからデータを取得するために使用されます。
curlでGETリクエストを送信するには、以下のコマンドを使用します。
curl http://example.com
このコマンドを実行すると、指定したURLのコンテンツが表示されます。
POSTリクエストの送信方法
POSTリクエストは、サーバーにデータを送信するために使用されます。
curlでPOSTリクエストを送信するには、-d
オプションを使用します。
curl -X POST -d "name=John&age=30" http://example.com/api
このコマンドでは、name
とage
のデータを指定したURLに送信します。
PUTリクエストの送信方法
PUTリクエストは、サーバー上のリソースを更新するために使用されます。
curlでPUTリクエストを送信するには、-X PUT
オプションを使用します。
curl -X PUT -d "name=Jane" http://example.com/api/user/1
このコマンドでは、ユーザーIDが1のリソースを更新します。
DELETEリクエストの送信方法
DELETEリクエストは、サーバー上のリソースを削除するために使用されます。
curlでDELETEリクエストを送信するには、-X DELETE
オプションを使用します。
curl -X DELETE http://example.com/api/user/1
このコマンドでは、ユーザーIDが1のリソースを削除します。
HEADリクエストの送信方法
HEADリクエストは、サーバーからヘッダー情報のみを取得するために使用されます。
curlでHEADリクエストを送信するには、-I
オプションを使用します。
curl -I http://example.com
このコマンドを実行すると、指定したURLのヘッダー情報が表示されます。
curlコマンドのオプション
curlコマンドは多くのオプションを提供しており、リクエストの詳細をカスタマイズできます。
以下に、主要なオプションの使い方を示します。
ヘッダー情報の指定方法
curlでリクエストにカスタムヘッダーを追加するには、-H
オプションを使用します。
例えば、Content-Type
ヘッダーを指定する場合は以下のようにします。
curl -H "Content-Type: application/json" http://example.com/api
このコマンドでは、JSON形式のデータを送信することを示しています。
データの送信方法
データを送信する際には、-d
オプションを使用します。
データはURLエンコードされた形式で送信されます。
以下は、JSONデータを送信する例です。
curl -X POST -d "{\"name\":\"John\", \"age\":30}" -H "Content-Type: application/json" http://example.com/api
このコマンドでは、JSON形式のデータを指定したURLにPOSTリクエストで送信します。
認証情報の指定方法
curlでは、基本認証やトークン認証などの認証情報を簡単に指定できます。
基本認証を使用する場合は、-u
オプションを使用します。
curl -u username:password http://example.com/protected
このコマンドでは、指定したユーザー名とパスワードで保護されたリソースにアクセスします。
タイムアウトの設定方法
リクエストのタイムアウトを設定するには、--max-time
オプションを使用します。
以下は、タイムアウトを10秒に設定する例です。
curl --max-time 10 http://example.com
このコマンドでは、10秒以内に応答がない場合、リクエストが中止されます。
リダイレクトの扱い方
curlは、デフォルトではリダイレクトを自動的に追跡しません。
リダイレクトを追跡するには、-L
オプションを使用します。
curl -L http://example.com/redirect
このコマンドでは、リダイレクト先のURLに自動的に移動します。
レスポンスの保存方法
curlで取得したレスポンスをファイルに保存するには、-o
オプションを使用します。
以下は、レスポンスをoutput.txt
というファイルに保存する例です。
curl -o output.txt http://example.com
このコマンドを実行すると、指定したURLのコンテンツがoutput.txt
に保存されます。
ファイルのダウンロードとアップロード
curlコマンドを使用すると、ファイルのダウンロードやアップロードが簡単に行えます。
以下に、具体的な方法を示します。
ファイルをダウンロードする方法
curlを使用してファイルをダウンロードするには、-O
オプションを使用します。
このオプションを指定すると、URLのファイル名で保存されます。
curl -O http://example.com/file.zip
このコマンドを実行すると、file.zip
という名前でファイルがダウンロードされます。
ファイルをアップロードする方法
ファイルをサーバーにアップロードするには、-F
オプションを使用します。
以下は、file.txt
というファイルをアップロードする例です。
curl -F "file=@file.txt" http://example.com/upload
このコマンドでは、file.txt
を指定したURLにアップロードします。
@
記号を使うことで、ファイルを指定できます。
複数ファイルのダウンロード方法
複数のファイルを一度にダウンロードするには、-O
オプションを複数回使用するか、URLをリストにしてループ処理を行います。
以下は、複数のファイルをダウンロードする例です。
curl -O http://example.com/file1.zip -O http://example.com/file2.zip
このコマンドを実行すると、file1.zip
とfile2.zip
の両方がダウンロードされます。
ファイルのダウンロード進捗を表示する方法
ファイルをダウンロードする際に進捗を表示するには、-#
オプションを使用します。
以下は、進捗バーを表示しながらファイルをダウンロードする例です。
curl -# -O http://example.com/largefile.zip
このコマンドを実行すると、ダウンロードの進捗がバー形式で表示されます。
これにより、ダウンロードの状況を視覚的に確認できます。
APIとの連携
curlコマンドは、REST APIとの連携に非常に便利です。
以下に、APIに対するリクエストの送信方法やデータの送信方法を示します。
REST APIにGETリクエストを送信する
REST APIにGETリクエストを送信するには、curlを使用して以下のようにコマンドを実行します。
curl -X GET http://api.example.com/users
このコマンドでは、指定したURLからユーザー情報を取得します。
レスポンスは通常、JSON形式で返されます。
REST APIにPOSTリクエストを送信する
POSTリクエストを使用して新しいリソースを作成するには、以下のようにcurlを使用します。
curl -X POST -d "name=John&age=30" http://api.example.com/users
このコマンドでは、name
とage
のデータを指定したURLに送信し、新しいユーザーを作成します。
JSONデータを送信する方法
JSON形式のデータをAPIに送信する場合、-H
オプションでContent-Type
を指定し、-d
オプションでデータを送信します。
以下はその例です。
curl -X POST -H "Content-Type: application/json" -d "{\"name\":\"John\", \"age\":30}" http://api.example.com/users
このコマンドでは、JSON形式のデータを指定したURLにPOSTリクエストで送信します。
APIの認証にcurlを使う方法
APIが認証を必要とする場合、curlを使用して認証情報を指定できます。
基本認証を使用する場合は、-u
オプションを使用します。
以下はその例です。
curl -u username:password http://api.example.com/protected
このコマンドでは、指定したユーザー名とパスワードで保護されたリソースにアクセスします。
また、トークン認証を使用する場合は、ヘッダーにトークンを追加します。
curl -H "Authorization: Bearer your_token" http://api.example.com/protected
このコマンドでは、Bearerトークンを使用して認証されたリソースにアクセスします。
応用例
curlコマンドは、さまざまなシナリオで応用可能です。
以下に、いくつかの応用例を示します。
複数のリクエストを一度に送信する方法
複数のリクエストを一度に送信するには、コマンドをセミコロンで区切って実行します。
以下は、2つのGETリクエストを一度に送信する例です。
curl -X GET http://api.example.com/users; curl -X GET http://api.example.com/products
このコマンドを実行すると、ユーザー情報と製品情報の両方が取得されます。
プロキシサーバーを経由してリクエストを送信する方法
プロキシサーバーを経由してリクエストを送信するには、-x
オプションを使用します。
以下は、プロキシサーバーを指定してリクエストを送信する例です。
curl -x http://proxy.example.com:8080 http://api.example.com
このコマンドでは、指定したプロキシサーバーを経由してAPIにアクセスします。
SSL証明書を無視してリクエストを送信する方法
SSL証明書の検証を無視してリクエストを送信するには、-k
オプションを使用します。
以下はその例です。
curl -k https://self-signed.example.com
このコマンドを実行すると、自己署名証明書を使用しているサーバーに対してもリクエストが送信されます。
リクエストのログを保存する方法
curlのリクエストとレスポンスのログを保存するには、-v
オプションを使用し、出力をファイルにリダイレクトします。
以下はその例です。
curl -v http://api.example.com > request_log.txt 2>&1
このコマンドを実行すると、リクエストの詳細とレスポンスがrequest_log.txt
に保存されます。
これにより、後でリクエストの内容を確認することができます。
よくある質問
まとめ
この記事では、curlコマンドを使用してHTTP通信を行う方法や、さまざまなリクエストの送信方法、データの送信、APIとの連携、ファイルのダウンロード・アップロードの手法について詳しく解説しました。
curlは非常に強力なツールであり、特に開発やシステム管理の現場で役立つ機能が豊富です。
これを機に、curlを活用して自動化やAPIとの連携を試みてみてはいかがでしょうか。