Node.js は、Chrome V8 JavaScript エンジンに基づく非同期イベント駆動型 JavaScript ランタイム環境です。これを使用すると、効率的な Web アプリケーションを開発できます。その 1 つは、HTTP プロトコルを介したデータ対話です。 HTTP プロトコルでは、GET リクエストと POST リクエストが最も一般的な 2 つのリクエスト メソッドです。この記事では主にNode.jsでPOSTリクエストとレスポンスを実装する方法を紹介します。
1. HTTP リクエストとレスポンスの基本
POST リクエストとレスポンスを作成する前に、まず HTTP リクエストとレスポンスの基本概念を理解する必要があります。 HTTP では、リクエストはリクエスト行、リクエストヘッダー、リクエスト本文の 3 つの部分で構成されます。応答も、ステータス行、応答ヘッダー、応答本文の 3 つの部分で構成されます。
リクエスト行には、リクエストメソッド、リクエストされた URL、HTTP プロトコルのバージョン番号が含まれます。リクエスト ヘッダーには、Accept、Content-Type、Authorization などのリクエスト関連のメタ情報が含まれます。リクエスト本文には特定のリクエスト データが含まれます。POST リクエストの場合、リクエスト本文には送信されたフォーム データが含まれます。
応答ステータス行には、HTTP プロトコルのバージョン番号、ステータス コード、およびステータスの説明が含まれます。応答ヘッダーには、Content-Type、Cache-Control、Set-Cookie などの応答関連のメタ情報が含まれます。応答本文には、サーバー応答のデータが含まれます。
2. Node.js の POST リクエスト
Node.js では、HTTP モジュールを使用して HTTP リクエストを処理できます。 http.createServer() メソッドを使用して HTTP サーバーを作成し、request.on() メソッドを使用してリクエスト イベントをリッスンし、リクエスト オブジェクトを取得します。リクエストメソッド、URL、リクエストヘッダ、リクエストボディなどの情報は、リクエストオブジェクトを通じて取得できます。
POST リクエストの場合、リクエスト オブジェクトのデータ イベントと終了イベントを通じてリクエスト本文のデータを監視する必要があります。このうち、データ イベントは複数回トリガーされ、そのたびにリクエスト本文のデータの一部が渡されます。データ イベント コールバック関数でこれらのデータを結合することにより、完全なリクエスト本文データが取得されます。終了イベントのコールバック関数では、リクエスト本体のデータをさらに処理できます。
以下は、POST リクエストを処理して応答を返す機能を実装する簡単な Node.js の例です。
const http = require('http'); http.createServer(function (request, response) { if (request.method === 'POST') { let body = ''; request.on('data', function (data) { body += data; }); request.on('end', function () { console.log('POST请求体数据为:', body); response.end('POST请求成功!'); }); } else { response.end('暂不支持除POST外的其他请求方式!'); } }).listen(8888); console.log('服务器启动成功!');
このコードは、HTTP サーバーを作成し、ポート 8888 をリッスンします。 POSTリクエストを受信した場合はリクエストボディのデータを結合してコンソールに出力しますが、その他のリクエストを受信した場合は「POST以外のリクエストメソッドはまだサポートされていません!」という応答メッセージが返されます。たとえば、curl コマンドを使用して POST リクエストをシミュレートできます。
curl -X POST -d 'hello post request' http://localhost:8888
このコマンドは、POST リクエストを http://localhost:8888 に送信し、データ hello post リクエストをリクエスト本文として使用します。
3. Node.js での POST 応答
POST リクエストに対する応答の場合、response.write() メソッドを使用して応答データを応答本文に書き込みます。応答データが多い場合は、response.write() メソッドを使用して応答データの一部を複数回書き込み、最後に response.end() メソッドを使用して残りのデータを書き込み、応答を完了します。 response.end() メソッドは 1 回しか呼び出せないことに注意してください。
次は、POST リクエストを処理して応答を返す機能を実装する簡単な Node.js の例です:
const http = require('http'); http.createServer(function (request, response) { if (request.method === 'POST') { let body = ''; request.on('data', function (data) { body += data; }); request.on('end', function () { console.log('POST请求体数据为:', body); response.writeHead(200, {'Content-Type': 'text/plain'}); response.write('收到POST请求,请求体为:' + body); response.end(); }); } else { response.writeHead(200, {'Content-Type': 'text/plain'}); response.end('暂不支持除POST外的其他请求方式!'); } }).listen(8888); console.log('服务器启动成功!');
このコードは、HTTP サーバーを作成し、POST リクエストを処理する機能を実装します。 POSTリクエストを受信した場合はリクエストボディのデータをコンソールに出力し、受信したデータをレスポンスとしてクライアントに返しますが、それ以外のリクエストを受信した場合は「POST以外のリクエストメソッドはまだサポートされていません!」というレスポンスが返されます。情報。たとえば、curl コマンドを使用して POST リクエストをシミュレートできます。
curl -X POST -d 'hello post request' http://localhost:8888
このコマンドは、POST リクエストを http://localhost:8888 に送信し、データ hello post リクエストをリクエスト本文として使用します。サーバーは受信したデータを変更せずに返します。
4. 概要
この記事では、Node.js で POST リクエストとレスポンスを処理する方法を紹介します。 POSTリクエストを行う場合は、リクエストボディデータのデータイベントと終了イベントを監視してリクエストデータを処理する必要があり、レスポンスを行う場合は、response.write()メソッドを使用してレスポンスデータをレスポンスボディを作成し、最後にレスポンスを使用します。end() メソッドはレスポンスを終了します。 HTTP プロトコルの基本を理解することで、Node.js の POST リクエストと応答についてより深く理解できるようになります。
以上がnodejsのポストリクエストとレスポンスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。