ミドルウェアは Web 開発において非常に重要な概念であり、リクエストとレスポンスのさまざまな処理を可能にします。 Node.js は非常に人気のあるサーバーサイド言語として、ミドルウェアの面でも強力なサポートを提供します。
Node.js では、ミドルウェアは HTTP リクエストに対して何らかの処理を実行し、次のミドルウェアに渡すことができる機能です。各ミドルウェアは、特定のニーズを満たすためにリクエストまたは応答のカスタム処理を実行できます。
以下では、Node.js ミドルウェアを簡単に実装することで、ミドルウェアの概念と実装方法を紹介します。
ミドルウェアの主な機能は、HTTP リクエストと応答を処理することです。ただし、リクエスト本文の解析、エラーやリクエスト情報のログ記録など、他のさまざまなタスクも実行できます。
ミドルウェアは任意の関数にすることができますが、特定の形式に従う必要があります。基本的なミドルウェア形式は次のとおりです。
function (req, res, next) { // 处理请求和响应 next(); // 调用下一个中间件 }
この関数は、リクエスト オブジェクト (req) とレスポンス オブジェクト (res) にアクセスできます。 req オブジェクトには、リクエスト ヘッダー、本文、メソッドなど、受信した HTTP リクエストに関する情報が含まれます。 res オブジェクトは、HTTP 応答をクライアントに送信するために使用されます。
この関数では、リクエストと応答を処理する任意の関数を実行できます。ただし、正しい順序を確保するには、next() 関数を呼び出して次のミドルウェアを呼び出す必要もあります。 next() を呼び出さない場合、リクエストは次のミドルウェアに届きません。
Express フレームワークを使用してミドルウェアを開発できますが、ここでは Node.js 独自の HTTP モジュールを使用してミドルウェアを実装します。
まず、Node.js の HTTP モジュールをインストールする必要があります。これは、次の方法でインストールできます。
npm install http
以下は、すべてのリクエストのリクエスト URL とリクエスト時間をログに記録する単純な Node.js ミドルウェアです。
const http = require('http'); const server = http.createServer(function (req, res) { console.log(`Received request for ${req.url} at ${new Date()}`); res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World '); }); server.listen(3000, function () { console.log('Server listening on port 3000'); });
このミドルウェアでは、http.js を使用します。 createServer() 関数を使用して HTTP サーバーを作成します。リクエストごとに呼び出される関数を渡します。
リクエストを受信するたびに、リクエストされた URL と現在時刻をコンソールに記録し、「Hello World」応答を送信します。応答を適切にフォーマットするために、応答コードと応答ヘッダーも設定していることに注意してください。
これは非常に単純なミドルウェアの例ですが、いくつかの基本的な概念を示しています。リクエスト本文の解析や認証の実装などの機能を追加することで、ミドルウェアを使用して非常に強力な Web アプリケーションを構築できます。
Node.js アプリケーションで複数のミドルウェアを使用する場合、ミドルウェアの実行順序は非常に重要です。デフォルトでは、ミドルウェアはアプリケーションに追加された順序で実行されます。たとえば、次のコードは最初にログ情報を表示し、次に HTTP リクエストに応答します:
app.use(function (req, res, next) { console.log('Received a request!'); next(); }); app.get('/', function (req, res) { res.send('Hello World!'); });
ただし、ミドルウェアを特定の順序で実行したい場合は、next() 関数を使用して次のことを行うことができます。プロセスを制御します。たとえば、次のコードは最初にログを記録し、次に HTTP 認証を処理し、最後にリクエストに応答します。
app.use(function (req, res, next) { console.log('Received a request!'); next(); }); app.use(function (req, res, next) { if (!req.user) { res.status(401).send('Unauthorized'); } else { next(); } }); app.get('/', function (req, res) { res.send('Hello World!'); });
この例では、リクエスト ヘッダーにユーザー識別子がない場合、401 Unauthorized が送信されます。応答。それ以外の場合は、 next() 関数を呼び出して次のミドルウェアを開始します。
ミドルウェアは、Node.js 開発において非常に重要な概念です。これらにより、HTTP リクエストとレスポンスを処理できるようになります。 Node.js では、ミドルウェアはリクエスト チェーンでカスタム アクションを実行する関数です。各ミドルウェアは、特定のニーズを満たすためにリクエストまたは応答のカスタム処理を実行できます。 Express フレームワークを使用してミドルウェアを開発することも、Node.js 独自の HTTP モジュールを使用することもできます。複数のミドルウェアを使用する場合、ミドルウェアが実行される順序は非常に重要です。 next() 関数を使用してプロセスを制御し、ミドルウェアが特定の順序で実行されるようにすることができます。
以上がNodejsミドルウェアのシンプルな実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。