Bash

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&param2=value2"

このコマンドでは、param1param2というクエリパラメータを持つリクエストを送信します。

{"status":"success","data":{"param1":"value1","param2":"value2"}}

GETリクエストは、データを取得する際に非常に便利です。

curlを使うことで、簡単にリクエストを送信し、レスポンスを確認することができます。

POSTリクエストの送信方法

POSTリクエストは、サーバーにデータを送信するためのリクエストです。

curlを使用してPOSTリクエストを送信する方法を以下に示します。

基本的なPOSTリクエスト

以下のコマンドを使用して、指定したURLにPOSTリクエストを送信します。

データは-dオプションを使って指定します。

curl -X POST -d "param1=value1&param2=value2" http://example.com/api

このコマンドを実行すると、param1param2のデータが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

このコマンドでは、フォームデータとしてparam1param2を送信します。

{"status":"success","message":"Form data received."}

POSTリクエストは、データをサーバーに送信する際に非常に重要です。

curlを使うことで、簡単にリクエストを送信し、レスポンスを確認することができます。

PUTリクエストの送信方法

PUTリクエストは、指定したリソースを更新するために使用されます。

curlを使用してPUTリクエストを送信する方法を以下に示します。

基本的なPUTリクエスト

以下のコマンドを使用して、指定したURLにPUTリクエストを送信します。

データは-dオプションを使って指定します。

curl -X PUT -d "param1=newValue1&param2=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など)
-dPOSTや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を活用し、さまざまなリクエストを試してみることをお勧めします。

関連記事

Back to top button