cURL で POST リクエストを送信する方法

cURL は、HTTP、HTTPS、FTP などのさまざまなネットワーク プロトコル間でシームレスなデータ転送を行うために設計された多用途のコマンド ライン ユーティリティです。すべての主要なオペレーティング システムで使用できる cURL は、コマンド ラインから HTTP リクエストを送信するための標準ツールになっています。このクロスプラットフォーム ユーティリティは、HTTP、HTTPS、FTP、IMAP などのプロトコルをサポートしているため、API にリクエストを送信したり、Web サイトをスクレイピングしたりすることが簡単にできます。cURL は幅広く利用でき、プロトコルもサポートされているため、REST API ドキュメントでは、コマンド ラインから直接 API 呼び出しをテストする簡単な方法としてよく参照されます。
このチュートリアルでは、cURL を使用して POST リクエストを実行し、簡単なコマンドライン指示を通じてサーバーとの効率的な通信を可能にする方法について説明します。
POST リクエストとは何ですか?
POST リクエストは、サーバーにデータを送信するために使用される HTTP メソッドであり、最も一般的な HTTP メソッドの 1 つです。データが URL に含まれる GET リクエストとは異なり、POST リクエストはリクエスト本体でデータを送信します。これにより、目立たないデータ転送が可能になり、ブラウザーによって GET リクエストに課せられる URL の長さ制限を回避できます。
POST リクエストは、フォームの送信、ファイルのアップロード、API への JSON データの送信によく使用されます。データはリクエスト本文に保存されるため、ブラウザの履歴には表示されません。また、GET リクエストとは異なり、POST リクエストは通常、ブラウザによってキャッシュされません。
cURL POSTリクエストの実用的な使用例
cURL POST リクエストは、次のようなさまざまなシナリオで広く使用されています。
- REST API のテスト– 開発者は cURL を使用して、アプリケーションに実装する前に API エンドポイントをすばやくテストします。
- フォーム送信の自動化– cURL を使用すると、Web フォームとのやり取りを自動化し、手動入力なしでデータを送信できます。
- ファイルのアップロード– 多くの API では POST リクエストを使用したファイルのアップロードが許可されているため、cURL はこのプロセスを自動化するための効果的なツールとなります。
- 認証システムとのやり取り– 開発者は cURL を使用してユーザーを認証し、API トークンまたは資格情報を使用して保護されたリソースにアクセスできます。
- データ スクレイピングと統合– cURL の POST リクエスト機能を使用すると、さまざまなオンライン ソースからのデータの抽出と統合が簡素化されます。
cURL で POST リクエストを実行する
POST リクエストに cURL を使用するには、システムにインストールされていることを確認してください。まだインストールしていない場合は、cURL の設定に関するガイドを参照してください。以下に、重要な cURL オプションをまとめた参照表を示します。
ショートフラグ | ロングフラグ | 議論 | 説明 |
-X | - リクエスト | (POST リクエストの場合は「POST」を使用します) | リクエストのHTTPメソッドを定義します |
-b | - クッキー | リクエストでクッキーを送信します | |
-c | --クッキージャー | 受信したクッキーをファイルに保存します | |
-d | - データ | POSTリクエストでデータを送信します | |
-f | - 失敗 | サーバーエラー時にサイレント障害を確実に防止 | |
-F | - 形状 | <名前=コンテンツ> | フォームデータを送信します (application/x-www-form-urlencoded) |
-H | - ヘッダ | ヘッダー/@ファイル | カスタムHTTPヘッダーを含む |
-私 | - 含む | レスポンスにHTTPヘッダーを表示する | |
-l | - 頭 | ヘッダーのみ取得 | |
-k | --安全でない | SSL検証をバイパスする | |
-L | - 位置 | リダイレクトに従う (3XX) | |
-o | - 出力 | 出力を指定されたファイルに保存します | |
-お | --リモート名 | 出力をリモートファイル名で保存します | |
-s | - 静けさ | 出力メッセージを抑制します | |
-v | --詳細 | 詳細な出力を有効にする(デバッグ) | |
-w | --書き出し | 応答の詳細を出力する |
利用可能なオプションの完全なリストを表示するには、以下を使用します。
カール --help
よくあるエラーとその解決方法
cURL は強力ですが、POST リクエストを送信するときにエラーが発生することがよくあります。一般的な問題と解決策を次に示します。
- curl: (6) ホストを解決できませんでした– これはドメイン名が間違っているか、DNS 解決の問題があることを意味します。URL を再確認してください。
- curl: (7) ホストへの接続に失敗しました– サーバーにアクセスできないことを示します。サーバーがオンラインであり、インターネット接続がアクティブであることを確認してください。
- curl: (35) SSL接続エラー– SSLの問題によりリクエストが失敗した場合は、-kを使用してSSL検証をバイパスしてみてください。
- HTTP 400 不正なリクエスト– これは、サーバーがリクエストを拒否したことを意味します。多くの場合、データ形式が正しくないためです。コンテンツ タイプとデータ ペイロードを確認してください。
- HTTP 401 認証なし– 認証が必要であるが、認証が欠落しているか正しくない場合に発生します。-u または -H "Authorization: Bearer <token>" を使用して、API キーまたは資格情報が正しく渡されていることを確認します。
基本的なPOSTリクエスト構文
curl -X POST -d "こんにちは" https://example.com/api
このコマンドでは、
- -X POST はリクエスト タイプを指定します。
- -d "Hello" は送信されるデータを定義します。
- https://example.com/api がターゲット URL です。
コンテンツタイプヘッダーの設定
curl -X POST -H "コンテンツタイプ: text/plain" -d "こんにちは" https://example.com/api
-H "Content-Type: text/plain" を追加すると、データ形式がプレーンテキストであることがサーバーに通知されます。
JSONデータの送信
curl -X POST -H "コンテンツタイプ: application/json" -d '{"key":"value"}' https://example.com/api
コンテンツ タイプとして application/json を使用すると、データが JSON として正しく解釈されます。
XMLデータの送信
curl -X POST -H "Content-Type: application/xml" -d '<?xml version="1.0" encoding="UTF-8"?><root><name>John Doe</name><age>30</age></root>' https://example.com/api
POST によるファイルのアップロード
curl -X POST -F "file=@/path/to/img.png" https://example.com/api/upload
複数のファイルをアップロードする場合:
curl -X POST -F "file=@/path/to/img1.png" -F "file=@/path/to/img2.png" https://example.com/api/upload
cURL による認証
curl -u ユーザー名:パスワード https://example.com/login
ユーザー名とパスワードを実際の資格情報に置き換えます。
結論
cURL は、強力で柔軟なコマンドライン オプションを使用して HTTP のやり取りを簡素化します。POST リクエストをマスターすることで、開発者は API 通信、データ転送、およびファイルのアップロードを効率的に管理できます。API エンドポイントのテスト、フォーム送信の自動化、Web サイトからのデータのスクレイピングなど、必要な作業が何であれ、cURL は軽量で効果的なソリューションを提供します。ワークフローを最適化するために、cURL を試し続けてください。