Linux – curlで各種リクエスト(GET/POST/PUT/DELETE)を送信する方法
curlは、LinuxでHTTPリクエストを送信するためのコマンドラインツールです。
GETリクエストはデフォルトで送信され、POST、PUT、DELETEリクエストはオプションを指定して送信します。
GETリクエストは単にcurl URLで送信できます。
POSTリクエストは-X POSTと-dでデータを指定します。
PUTリクエストは-X PUTと-dでデータを送信し、DELETEリクエストは-X DELETEを使用します。
GETリクエストの送信方法
GETリクエストは、指定したURLからデータを取得するためのリクエストです。
curlを使用してGETリクエストを送信する方法を以下に示します。
基本的なGETリクエスト
以下のコマンドを使用して、指定したURLにGETリクエストを送信します。
curl http://example.comこのコマンドを実行すると、http://example.comからのレスポンスが表示されます。
<!doctype html>
<html>
<head>
<title>Example Domain</title>
</head>
<body>
<h1>Example Domain</h1>
<p>This domain is for use in illustrative examples in documents.</p>
</body>
</html>ヘッダーの追加
GETリクエストにカスタムヘッダーを追加することも可能です。
以下のように-Hオプションを使用します。
curl -H "Authorization: Bearer YOUR_TOKEN" http://example.comこのコマンドでは、Authorizationヘッダーを追加してリクエストを送信します。
クエリパラメータの指定
GETリクエストでは、URLにクエリパラメータを追加することができます。
以下のように記述します。
curl "http://example.com/api?param1=value1¶m2=value2"このコマンドでは、param1とparam2というクエリパラメータを持つリクエストを送信します。
{"status":"success","data":{"param1":"value1","param2":"value2"}}GETリクエストは、データを取得する際に非常に便利です。
curlを使うことで、簡単にリクエストを送信し、レスポンスを確認することができます。
POSTリクエストの送信方法
POSTリクエストは、サーバーにデータを送信するためのリクエストです。
curlを使用してPOSTリクエストを送信する方法を以下に示します。
基本的なPOSTリクエスト
以下のコマンドを使用して、指定したURLにPOSTリクエストを送信します。
データは-dオプションを使って指定します。
curl -X POST -d "param1=value1¶m2=value2" http://example.com/apiこのコマンドを実行すると、param1とparam2のデータがhttp://example.com/apiに送信されます。
{"status":"success","message":"Data received successfully."}JSONデータの送信
JSON形式のデータを送信する場合は、-HオプションでContent-Typeを指定し、データをJSON形式で記述します。
curl -X POST -H "Content-Type: application/json" -d '{"param1":"value1","param2":"value2"}' http://example.com/apiこのコマンドでは、JSONデータをPOSTリクエストとして送信します。
{"status":"success","data":{"param1":"value1","param2":"value2"}}フォームデータの送信
フォームデータを送信する場合は、-Fオプションを使用します。
以下のように記述します。
curl -X POST -F "param1=value1" -F "param2=value2" http://example.com/apiこのコマンドでは、フォームデータとしてparam1とparam2を送信します。
{"status":"success","message":"Form data received."}POSTリクエストは、データをサーバーに送信する際に非常に重要です。
curlを使うことで、簡単にリクエストを送信し、レスポンスを確認することができます。
PUTリクエストの送信方法
PUTリクエストは、指定したリソースを更新するために使用されます。
curlを使用してPUTリクエストを送信する方法を以下に示します。
基本的なPUTリクエスト
以下のコマンドを使用して、指定したURLにPUTリクエストを送信します。
データは-dオプションを使って指定します。
curl -X PUT -d "param1=newValue1¶m2=newValue2" http://example.com/api/resource/1このコマンドを実行すると、リソースIDが1のデータが更新されます。
{"status":"success","message":"Resource updated successfully."}JSONデータの送信
JSON形式のデータを送信する場合は、-HオプションでContent-Typeを指定し、データをJSON形式で記述します。
curl -X PUT -H "Content-Type: application/json" -d '{"param1":"newValue1","param2":"newValue2"}' http://example.com/api/resource/1このコマンドでは、JSONデータをPUTリクエストとして送信します。
{"status":"success","data":{"param1":"newValue1","param2":"newValue2"}}フォームデータの送信
フォームデータを送信する場合は、-Fオプションを使用します。
以下のように記述します。
curl -X PUT -F "param1=newValue1" -F "param2=newValue2" http://example.com/api/resource/1このコマンドでは、リソースIDが1のデータをフォームデータとして更新します。
{"status":"success","message":"Form data updated."}PUTリクエストは、リソースの更新に非常に便利です。
curlを使うことで、簡単にリクエストを送信し、レスポンスを確認することができます。
DELETEリクエストの送信方法
DELETEリクエストは、指定したリソースを削除するために使用されます。
curlを使用してDELETEリクエストを送信する方法を以下に示します。
基本的なDELETEリクエスト
以下のコマンドを使用して、指定したURLにDELETEリクエストを送信します。
リソースのIDをURLに含めて指定します。
curl -X DELETE http://example.com/api/resource/1このコマンドを実行すると、リソースIDが1のデータが削除されます。
{"status":"success","message":"Resource deleted successfully."}ヘッダーの追加
DELETEリクエストにカスタムヘッダーを追加することも可能です。
以下のように-Hオプションを使用します。
curl -X DELETE -H "Authorization: Bearer YOUR_TOKEN" http://example.com/api/resource/1このコマンドでは、Authorizationヘッダーを追加してリクエストを送信します。
{"status":"success","message":"Resource deleted with authorization."}クエリパラメータの指定
DELETEリクエストでも、必要に応じてクエリパラメータを追加することができます。
以下のように記述します。
curl -X DELETE "http://example.com/api/resource/1?force=true"このコマンドでは、forceというクエリパラメータを持つリクエストを送信します。
{"status":"success","message":"Resource deleted with force."}DELETEリクエストは、リソースを削除する際に非常に重要です。
curlを使うことで、簡単にリクエストを送信し、レスポンスを確認することができます。
curlのオプションと応用
curlは非常に多機能なツールであり、さまざまなオプションを使用することで、リクエストのカスタマイズや応用が可能です。
ここでは、よく使われるオプションとその応用方法について説明します。
よく使われるオプション
| オプション | 説明 |
|---|---|
-X | リクエストメソッドを指定(GET, POST, PUT, DELETEなど) |
-d | POSTやPUTリクエストで送信するデータを指定 |
-H | リクエストヘッダーを追加 |
-F | フォームデータを送信 |
-i | レスポンスヘッダーを表示 |
-o | レスポンスをファイルに保存 |
-s | 進行状況を表示しない(サイレントモード) |
-L | リダイレクトを追従 |
レスポンスヘッダーの表示
レスポンスヘッダーを表示するには、-iオプションを使用します。
curl -i http://example.comこのコマンドを実行すると、レスポンスのヘッダーとボディが表示されます。
レスポンスをファイルに保存
レスポンスをファイルに保存するには、-oオプションを使用します。
curl -o response.html http://example.comこのコマンドでは、http://example.comのレスポンスがresponse.htmlというファイルに保存されます。
サイレントモードでのリクエスト
進行状況を表示せずにリクエストを送信するには、-sオプションを使用します。
curl -s http://example.comこのコマンドでは、進行状況が表示されず、レスポンスのみが出力されます。
リダイレクトの追従
リダイレクトを自動的に追従するには、-Lオプションを使用します。
curl -L http://example.com/redirectこのコマンドでは、リダイレクト先のURLに自動的にアクセスします。
複数のオプションを組み合わせる
curlのオプションは組み合わせて使用することができます。
例えば、POSTリクエストを送信し、レスポンスをファイルに保存する場合は以下のように記述します。
curl -X POST -d "param1=value1" -o response.txt http://example.com/apiこのコマンドでは、POSTリクエストを送信し、そのレスポンスをresponse.txtに保存します。
curlのオプションを活用することで、さまざまなリクエストを柔軟に行うことができます。
これにより、APIとのインタラクションやデータの取得・送信がより効率的に行えるようになります。
エラーハンドリングとデバッグ
curlを使用する際には、リクエストが成功することが重要ですが、時にはエラーが発生することもあります。
ここでは、curlのエラーハンドリングとデバッグの方法について説明します。
エラーメッセージの確認
curlは、リクエストが失敗した場合にエラーメッセージを表示します。
基本的なコマンドを実行した際に、エラーが発生した場合は、以下のようなメッセージが表示されます。
curl http://invalid-urlcurl: (6) Could not resolve host: invalid-urlこのようなエラーメッセージを確認することで、問題の原因を特定する手助けになります。
ステータスコードの確認
HTTPステータスコードを確認することで、リクエストの結果を把握できます。
-iオプションを使用して、レスポンスヘッダーを表示することができます。
curl -i http://example.com/api/resource/1HTTP/1.1 404 Not Found
Content-Type: application/json
...この例では、404ステータスコードが返されており、リソースが見つからないことを示しています。
詳細なデバッグ情報の表示
デバッグ情報を表示するには、-v(verbose)オプションを使用します。
これにより、リクエストとレスポンスの詳細な情報が表示されます。
curl -v http://example.comこのコマンドを実行すると、リクエストの詳細やレスポンスのヘッダーが表示され、問題の特定が容易になります。
* Trying 93.184.216.34...
* Connected to example.com (93.184.216.34) port 80 (#0)
> GET / HTTP/1.1
> Host: example.com
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Type: text/html; charset=UTF-8
< Content-Length: 1256
<
<!doctype html>
<html>
...タイムアウトの設定
リクエストが長時間かかる場合、タイムアウトを設定することができます。
--max-timeオプションを使用して、最大待機時間を指定します。
curl --max-time 10 http://example.comこのコマンドでは、10秒以内にレスポンスが返されない場合、リクエストがタイムアウトします。
エラーハンドリングの実装
スクリプト内でcurlを使用する場合、エラーハンドリングを実装することが重要です。
以下のように、リクエストの結果を確認し、エラーが発生した場合に適切な処理を行うことができます。
response=$(curl -s -o /dev/null -w "%{http_code}" http://example.com/api/resource/1)
if [ "$response" -ne 200 ]; then
echo "エラーが発生しました。ステータスコード: $response"
else
echo "リクエストは成功しました。"
fiこのスクリプトでは、HTTPステータスコードを確認し、エラーが発生した場合にメッセージを表示します。
エラーハンドリングとデバッグを適切に行うことで、curlを使用したリクエストの信頼性を向上させ、問題の特定と解決が容易になります。
まとめ
この記事では、curlを使用してさまざまなHTTPリクエスト(GET、POST、PUT、DELETE)を送信する方法や、curlのオプション、エラーハンドリング、デバッグのテクニックについて詳しく解説しました。
これにより、APIとのインタラクションやデータの取得・送信がより効率的に行えるようになります。
今後は、実際のプロジェクトや開発環境でcurlを活用し、さまざまなリクエストを試してみることをお勧めします。