[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"

この例では、param1param2という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

この例では、usernamepasswordという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

このコマンドでは、nameageというフィールドを持つ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のリソースのnameageを更新しています。

サーバーはこれらのデータを受け取り、リソースを更新します。

ファイルのアップロード方法

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"

この例では、param1param2という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

このコマンドでは、usernamepasswordというデータを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でPOSTリクエストが失敗するのはなぜ?

POSTリクエストが失敗する原因はいくつかあります。

主な理由は以下の通りです。

  • URLの間違い: 指定したURLが正しいか確認してください。
  • データ形式の不一致: サーバーが期待するデータ形式(例えば、JSONやフォームデータ)と異なる場合、リクエストが失敗することがあります。
  • 認証エラー: 認証が必要なAPIに対して適切な認証情報を提供していない場合、リクエストが拒否されます。
  • サーバーの問題: サーバー側でエラーが発生している可能性もあります。

サーバーのログを確認することが重要です。

curlでレスポンスが表示されない場合の対処法は?

レスポンスが表示されない場合、以下の点を確認してください。

  • コマンドの確認: curlコマンドが正しく記述されているか確認します。

特にURLやオプションに誤りがないかチェックしてください。

  • 出力のリダイレクト: -oオプションを使用して出力をファイルに保存している場合、標準出力には表示されません。

ファイルを確認してください。

  • エラーメッセージの確認: -vオプションを使用して詳細な出力を表示し、エラーメッセージやHTTPステータスコードを確認します。
  • ネットワーク接続: インターネット接続やサーバーの可用性を確認し、接続に問題がないか確認します。

curlでSSLエラーが発生した場合の対処法は?

SSLエラーが発生した場合、以下の対処法を試みてください。

  • 証明書の検証を無視: 一時的な対策として、-kまたは--insecureオプションを使用してSSL証明書の検証を無視することができます。

ただし、セキュリティ上のリスクがあるため、信頼できる環境でのみ使用してください。

  • 正しい証明書のインストール: サーバーのSSL証明書が正しくインストールされているか確認し、必要に応じて更新します。
  • CA証明書の更新: curlが使用するCA証明書のリストを更新することで、信頼できる証明書を使用できるようにします。
  • URLの確認: アクセスしようとしているURLが正しいか、HTTPSが正しく設定されているか確認します。

まとめ

この記事では、curlを使用してさまざまなHTTPリクエスト(GET、POST、PUT、DELETE)を送信する方法や、リクエストに必要なオプションの使い方、認証付きリクエストの送信方法について詳しく解説しました。

また、応用例として複数のリクエストを一度に送信する方法や、リクエストのタイムアウト設定、プロキシ経由でのリクエスト送信、SSL証明書の無視、リダイレクトの自動フォローについても触れました。

これらの情報を活用することで、curlを使ったHTTPリクエストの操作がよりスムーズに行えるようになるでしょう。

ぜひ、実際のプロジェクトやAPIとの連携にcurlを活用してみてください。

  • URLをコピーしました!
目次から探す