[Linux] curlで各種リクエスト(GET/POST/PUT/DELETE)を送信する方法
curlは、LinuxでHTTPリクエストを送信するためのコマンドラインツールです。
GETリクエストはデフォルトで送信され、特にオプションを指定する必要はありません。
POSTリクエストは-X POST
オプションと-d
でデータを指定します。
PUTリクエストは-X PUT
と-d
でデータを送信し、DELETEリクエストは-X DELETE
を使用します。
例として、GETはcurl http://example.com
、POSTはcurl -X POST -d "data=value" http://example.com
のように実行します。
- curlの基本的な使い方
- 各種HTTPリクエストの送信方法
- 認証付きリクエストの実行方法
- curlの便利なオプションの活用
- 応用例による実践的な利用法
curlとは
curlは、コマンドラインからURLを介してデータを転送するためのツールです。
主にHTTP、HTTPS、FTPなどのプロトコルをサポートしており、さまざまなリクエストを送信することができます。
curlは、APIとの通信やウェブサイトからのデータ取得、ファイルのアップロード・ダウンロードなど、幅広い用途で利用されています。
特に、スクリプトや自動化されたタスクにおいて、その柔軟性と使いやすさから多くの開発者に重宝されています。
curlは、LinuxやmacOS、Windowsなどの多くのプラットフォームで利用可能で、オープンソースとして提供されています。
コマンドラインでの操作が主ですが、プログラムからもライブラリとして利用できるため、さまざまな環境で活用されています。
GETリクエストの送信方法
GETリクエストの基本
GETリクエストは、指定したURLからデータを取得するためのリクエストです。
curlを使用してGETリクエストを送信する基本的なコマンドは以下の通りです。
curl http://example.com
このコマンドを実行すると、指定したURLのコンテンツが標準出力に表示されます。
GETリクエストは、データの取得に特化しており、サーバーに対してデータを送信することはありません。
クエリパラメータの指定方法
GETリクエストでは、URLにクエリパラメータを追加することで、特定のデータを取得できます。
クエリパラメータは、URLの末尾に?
を付け、その後にkey=value
の形式で指定します。
複数のパラメータは&
で区切ります。
curl "http://example.com/api?param1=value1¶m2=value2"
この例では、param1
とparam2
という2つのクエリパラメータを持つGETリクエストを送信しています。
ヘッダー情報の追加方法
curlでは、-H
オプションを使用してリクエストヘッダーを追加できます。
これにより、サーバーに特定の情報を伝えることができます。
例えば、User-Agent
ヘッダーを追加する場合は以下のようにします。
curl -H "User-Agent: MyApp/1.0" http://example.com
このコマンドは、User-Agent
ヘッダーを指定してGETリクエストを送信します。
ヘッダー情報は、APIの認証やデータ形式の指定などに利用されます。
レスポンスの保存方法
curlの出力をファイルに保存するには、-o
オプションを使用します。
以下のコマンドは、GETリクエストのレスポンスをresponse.html
というファイルに保存します。
curl -o response.html http://example.com
このコマンドを実行すると、指定したURLのコンテンツがresponse.html
というファイルに書き込まれます。
これにより、後でデータを確認したり、解析したりすることができます。
POSTリクエストの送信方法
POSTリクエストの基本
POSTリクエストは、サーバーにデータを送信するためのリクエストです。
curlを使用してPOSTリクエストを送信する基本的なコマンドは以下の通りです。
curl -X POST http://example.com/api
このコマンドを実行すると、指定したURLに対してPOSTリクエストが送信されます。
デフォルトでは、データは送信されませんが、-d
オプションを使用することでデータを送信できます。
フォームデータの送信
フォームデータをPOSTリクエストで送信する場合、-d
オプションを使用してkey=value
の形式でデータを指定します。
複数のデータは&
で区切ります。
curl -X POST -d "username=user&password=pass" http://example.com/login
この例では、username
とpassword
という2つのフォームデータを持つPOSTリクエストを送信しています。
サーバーはこれらのデータを受け取り、処理を行います。
JSONデータの送信
JSON形式のデータをPOSTリクエストで送信する場合、-H
オプションでContent-Type
を指定し、-d
オプションでJSONデータを送信します。
curl -X POST -H "Content-Type: application/json" -d '{"name": "John", "age": 30}' http://example.com/api
このコマンドでは、name
とage
というフィールドを持つJSONデータを送信しています。
APIがJSON形式のデータを受け取ることができる場合に使用します。
ファイルのアップロード方法
ファイルをPOSTリクエストでアップロードするには、-F
オプションを使用します。
以下のコマンドは、file.txt
というファイルをアップロードします。
curl -X POST -F "file=@file.txt" http://example.com/upload
このコマンドを実行すると、file.txt
が指定したURLにアップロードされます。
@
を付けることで、ファイルを指定することができます。
ヘッダー情報の追加方法
POSTリクエストでも、curlの-H
オプションを使用してヘッダー情報を追加できます。
例えば、認証トークンを追加する場合は以下のようにします。
curl -X POST -H "Authorization: Bearer your_token" -d "data=value" http://example.com/api
このコマンドでは、Authorization
ヘッダーを指定してPOSTリクエストを送信しています。
ヘッダー情報は、APIの認証やデータ形式の指定などに利用されます。
PUTリクエストの送信方法
PUTリクエストの基本
PUTリクエストは、指定したリソースを更新するために使用されるHTTPメソッド
です。
curlを使用してPUTリクエストを送信する基本的なコマンドは以下の通りです。
curl -X PUT http://example.com/api/resource
このコマンドを実行すると、指定したURLに対してPUTリクエストが送信されます。
PUTリクエストは、リソース全体を更新するために使用されることが一般的です。
データの送信方法
PUTリクエストでデータを送信するには、-d
オプションを使用します。
データはkey=value
の形式で指定できます。
以下の例では、リソースの属性を更新しています。
curl -X PUT -d "name=John&age=31" http://example.com/api/resource/1
このコマンドでは、IDが1のリソースのname
とage
を更新しています。
サーバーはこれらのデータを受け取り、リソースを更新します。
ファイルのアップロード方法
PUTリクエストでファイルをアップロードする場合、-T
オプションを使用します。
以下のコマンドは、file.txt
というファイルを指定したURLにアップロードします。
curl -X PUT -T file.txt http://example.com/api/resource/1
このコマンドを実行すると、file.txt
が指定したリソースにアップロードされ、リソースの内容が更新されます。
ヘッダー情報の追加方法
PUTリクエストでも、curlの-H
オプションを使用してヘッダー情報を追加できます。
例えば、JSONデータを送信する場合は、Content-Type
を指定します。
curl -X PUT -H "Content-Type: application/json" -d '{"name": "John", "age": 31}' http://example.com/api/resource/1
このコマンドでは、Content-Type
ヘッダーを指定してJSONデータを送信しています。
ヘッダー情報は、APIの認証やデータ形式の指定などに利用されます。
DELETEリクエストの送信方法
DELETEリクエストの基本
DELETEリクエストは、指定したリソースを削除するために使用されるHTTPメソッド
です。
curlを使用してDELETEリクエストを送信する基本的なコマンドは以下の通りです。
curl -X DELETE http://example.com/api/resource/1
このコマンドを実行すると、IDが1のリソースが指定したURLから削除されます。
DELETEリクエストは、リソースを完全に削除するために使用されるため、注意が必要です。
クエリパラメータの指定方法
DELETEリクエストでも、URLにクエリパラメータを追加することができます。
クエリパラメータは、URLの末尾に?
を付け、その後にkey=value
の形式で指定します。
複数のパラメータは&
で区切ります。
curl -X DELETE "http://example.com/api/resource?param1=value1¶m2=value2"
この例では、param1
とparam2
という2つのクエリパラメータを持つDELETEリクエストを送信しています。
サーバーはこれらのパラメータを考慮してリソースを削除します。
ヘッダー情報の追加方法
DELETEリクエストでも、curlの-H
オプションを使用してヘッダー情報を追加できます。
例えば、認証トークンを追加する場合は以下のようにします。
curl -X DELETE -H "Authorization: Bearer your_token" http://example.com/api/resource/1
このコマンドでは、Authorization
ヘッダーを指定してDELETEリクエストを送信しています。
ヘッダー情報は、APIの認証や特定の操作を行うために必要な情報をサーバーに伝えるために利用されます。
curlのオプション
-Xオプションの使い方
-X
オプションは、curlに特定のHTTPメソッド
を指定するために使用します。
デフォルトではGETリクエストが送信されますが、他のメソッド(POST、PUT、DELETEなど)を指定することができます。
以下は、PUTリクエストを送信する例です。
curl -X PUT http://example.com/api/resource
このコマンドでは、指定したURLに対してPUTリクエストを送信しています。
-dオプションの使い方
-d
オプションは、POSTやPUTリクエストでデータを送信するために使用します。
データはkey=value
の形式で指定し、複数のデータは&
で区切ります。
以下は、フォームデータを送信する例です。
curl -X POST -d "username=user&password=pass" http://example.com/login
このコマンドでは、username
とpassword
というデータをPOSTリクエストで送信しています。
-Hオプションの使い方
-H
オプションは、リクエストヘッダーを追加するために使用します。
APIの認証やデータ形式の指定などに利用されます。
以下は、JSONデータを送信する際にContent-Type
ヘッダーを指定する例です。
curl -X POST -H "Content-Type: application/json" -d '{"name": "John", "age": 30}' http://example.com/api
このコマンドでは、Content-Type
ヘッダーを指定してJSONデータを送信しています。
-o/-Oオプションの使い方
-o
オプションは、curlの出力を指定したファイルに保存するために使用します。
一方、-O
オプションは、URLのファイル名をそのまま使用して保存します。
以下は、-o
オプションの例です。
curl -o response.html http://example.com
このコマンドでは、指定したURLのレスポンスをresponse.html
というファイルに保存します。
-O
オプションの例は以下の通りです。
curl -O http://example.com/file.txt
このコマンドでは、file.txt
という名前でファイルが保存されます。
-Iオプションの使い方
-I
オプションは、HTTPヘッダーのみを取得するために使用します。
レスポンスボディは表示されず、ヘッダー情報だけが表示されます。
以下は、ヘッダー情報を取得する例です。
curl -I http://example.com
このコマンドを実行すると、指定したURLのHTTPヘッダー情報が表示されます。
-vオプションの使い方
-v
オプションは、curlの詳細な出力を表示するために使用します。
リクエストとレスポンスの詳細情報が表示され、デバッグに役立ちます。
以下は、詳細な出力を表示する例です。
curl -v http://example.com
このコマンドを実行すると、リクエストの詳細やレスポンスのヘッダー情報が表示され、通信の流れを確認することができます。
認証付きリクエストの送信方法
Basic認証の使用方法
Basic認証は、ユーザー名とパスワードを使用してリソースにアクセスするためのシンプルな認証方式です。
curlでは、-u
オプションを使用して認証情報を指定します。
以下は、Basic認証を使用してGETリクエストを送信する例です。
curl -u username:password http://example.com/api/resource
このコマンドを実行すると、指定したユーザー名とパスワードを使用してリソースにアクセスします。
ユーザー名とパスワードはコロンで区切って指定します。
Bearerトークンの使用方法
Bearerトークンは、OAuth 2.0などの認証方式で使用されるトークンです。
curlでは、-H
オプションを使用してAuthorization
ヘッダーにトークンを追加します。
以下は、Bearerトークンを使用してGETリクエストを送信する例です。
curl -H "Authorization: Bearer your_token" http://example.com/api/resource
このコマンドでは、your_token
というBearerトークンを使用してリソースにアクセスします。
トークンは、APIの認証に必要な情報を含んでいます。
クッキーを使った認証方法
クッキーを使用した認証は、セッション管理に一般的に使用されます。
curlでは、-b
オプションを使用してクッキーを指定できます。
以下は、クッキーを使用してGETリクエストを送信する例です。
curl -b "session_id=your_session_id" http://example.com/api/resource
このコマンドでは、session_id
というクッキーを使用してリソースにアクセスします。
クッキーは、サーバーがクライアントのセッションを識別するために使用されます。
クッキーの値は、サーバーからのレスポンスで取得したものを使用します。
応用例
複数のリクエストを一度に送信する方法
curlでは、セミコロン;
を使用して複数のリクエストを一度に送信することができます。
以下の例では、2つのGETリクエストを連続して送信しています。
curl http://example.com/api/resource1; curl http://example.com/api/resource2
このコマンドを実行すると、最初のリクエストが完了した後に次のリクエストが送信されます。
これにより、複数のリクエストを効率的に処理できます。
リクエストのタイムアウト設定
curlでは、--max-time
オプションを使用してリクエストのタイムアウトを設定できます。
以下の例では、リクエストが10秒以内に完了しない場合にタイムアウトします。
curl --max-time 10 http://example.com/api/resource
このコマンドを実行すると、指定したURLへのリクエストが10秒を超えると自動的に中止されます。
これにより、長時間待たされることを防ぐことができます。
プロキシを経由したリクエストの送信
curlでは、-x
オプションを使用してプロキシサーバーを指定することができます。
以下の例では、HTTPプロキシを経由してリクエストを送信しています。
curl -x http://proxy.example.com:8080 http://example.com/api/resource
このコマンドを実行すると、指定したプロキシサーバーを経由してリクエストが送信されます。
プロキシを使用することで、特定のネットワーク環境でのアクセスを管理できます。
SSL証明書の無視方法
curlでは、-k
または--insecure
オプションを使用してSSL証明書の検証を無視することができます。
以下の例では、SSL証明書の検証を無視してリクエストを送信しています。
curl -k https://example.com/api/resource
このコマンドを実行すると、SSL証明書のエラーが発生してもリクエストが送信されます。
ただし、セキュリティ上のリスクがあるため、信頼できる環境でのみ使用することが推奨されます。
リダイレクトの自動フォロー
curlでは、-L
オプションを使用してリダイレクトを自動的にフォローすることができます。
以下の例では、リダイレクトが発生した場合に自動的に新しいURLにアクセスします。
curl -L http://example.com/old-url
このコマンドを実行すると、http://example.com/old-url
がリダイレクトされる場合、curlは自動的に新しいURLにアクセスし、レスポンスを取得します。
これにより、手動でリダイレクト先を確認する手間が省けます。
よくある質問
まとめ
この記事では、curlを使用してさまざまなHTTPリクエスト(GET、POST、PUT、DELETE)を送信する方法や、リクエストに必要なオプションの使い方、認証付きリクエストの送信方法について詳しく解説しました。
また、応用例として複数のリクエストを一度に送信する方法や、リクエストのタイムアウト設定、プロキシ経由でのリクエスト送信、SSL証明書の無視、リダイレクトの自動フォローについても触れました。
これらの情報を活用することで、curlを使ったHTTPリクエストの操作がよりスムーズに行えるようになるでしょう。
ぜひ、実際のプロジェクトやAPIとの連携にcurlを活用してみてください。