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-url
curl: (6) Could not resolve host: invalid-url
このようなエラーメッセージを確認することで、問題の原因を特定する手助けになります。
ステータスコードの確認
HTTPステータスコードを確認することで、リクエストの結果を把握できます。
-i
オプションを使用して、レスポンスヘッダーを表示することができます。
curl -i http://example.com/api/resource/1
HTTP/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を活用し、さまざまなリクエストを試してみることをお勧めします。