Node.jsミドルウェアの仕組み
ビデオ チュートリアルの推奨: node js チュートリアル
Express ミドルウェアとは何ですか?
- ミドルウェアとは、文字通り、ソフトウェアの 1 つの層と別の層の間に配置されるものを意味します。
- Express ミドルウェアは、Express サーバーへのリクエストのライフサイクル中に実行される機能です。
- 各ミドルウェアは、接続されているすべてのルートの HTTP 要求と応答にアクセスできます。
- さらに、ミドルウェアは HTTP リクエストを終了したり、next を使用して別のミドルウェア関数に渡すことができます。このミドルウェアの「チェーン」により、コードを分割し、再利用可能なミドルウェアを作成できます。
Express ミドルウェアを作成するための要件
Express ミドルウェアを作成、使用、テストするには、いくつかのものをインストールする必要があります。まず、Node と NPM が必要です。インストールされていることを確認するには、次のコマンドを実行します。
1 |
|
インストールされている Node と NPM のバージョンが表示されるはずです。エラーが発生した場合は、Node をインストールする必要があります。すべての例は、Node ver 8 および NPM ver 5 で使用する必要があります。
この記事では Express バージョン 4.x を使用します。バージョン 3.x からバージョン 4.x では大幅な変更が加えられたため、これは重要です。
Express ミドルウェア: 基本
まず、Express の最も基本的な組み込みミドルウェアを使用します。新しいプロジェクトを作成し、npm で初期化します...
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
ミドルウェアはどのような問題を解決しますか?なぜそれを使うのでしょうか?
Web サーバー上で Node.js と Express を使用して Web アプリケーションを実行しているとします。このアプリでは、一部のページでログインが必要となります。
Web サーバーがデータのリクエストを受信すると、Express はユーザーとユーザーがリクエストしたデータに関する情報を含むリクエスト オブジェクトを提供します。 Express では、Web サーバーがユーザーに応答する前に変更できる応答オブジェクトへのアクセスも提供します。これらのオブジェクトは通常、req、res に短縮されます。
ミドルウェア関数は、関連情報を含むreq オブジェクトと res オブジェクトを変更するのに最適な場所です。たとえば、ユーザーがログインした後、データベースからユーザーの詳細を取得し、これらの詳細を res.user に保存できます。
1
2
3
4
5
6
7
8
9
10
11
12
async
function
userMiddleware (req, res, next) {
try
{
const
userData = await getUserData(req.params.id);
//see app.get below
if
(userData) {
req.user = userData;
next();
}
}
catch
(error) {
res.status(500).send(error.message);
//replace with proper error handling
}
}
ログイン後にコピー
エラーが発生し、他のコードを実行したくない場合は、この関数を呼び出さないでください。この場合は必ず応答を送信してください。送信しないと、クライアントはタイムアウトになるまで応答を待機することになります。 1 2 3 4 5 6 7 8 9 10 11 12 |
|
1 2 3 4 |
|
app.use 呼び出しを使用してミドルウェアをチェーンできます:
1 2 3 |
|
next() を呼び出さなくなるまで、関数が呼び出されるまで続きます。と呼ばれます。
Express ミドルウェアの種類- ルーター レベルのミドルウェア (例: router.use)組み込みミドルウェア (例: Express.static、express)。 json、express.urlencodedエラー処理ミドルウェア、例: app.use(err、req、res、next)サードパーティ ミドルウェア、例: bodyparser、cookieparser
- ルーター レベルのミドルウェア
- express.Router モジュール式のインストール可能なルーティング処理を作成するには、express.Router クラスを使用します。ルーティング インスタンスは、完全なミドルウェアおよびルーティング システムです。
- ロギング、認証などにミドルウェアを使用できます。以下に示すように、ユーザーの最新のアクティビティを記録し、認証ヘッダーを解析するには、それを使用して現在ログインしているユーザーを特定し、それを Request オブジェクトに追加します。 この関数は、プログラムがリクエストを受信するたびに実行されます。エラーが発生した場合は、後続のミドルウェアやルート処理を呼び出すことなく、単に応答を終了します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
|
- express。 static
HTML ファイルや画像などの静的リソースを提供します。
- express.json
ペイロードは、JSON で受信したリクエストを解析します。
- express.urlencoded
受信した URL エンコードされたペイロード要求を解析します。
(err、req、res、next) を受け取ります。 4 つのパラメーターを指定して、エラー処理ミドルウェア関数として識別する必要があります。次のオブジェクトを使用する必要がない場合でも、それを指定する必要があります。それ以外の場合、次のオブジェクトは通常のミドルウェアとして解釈され、エラーは処理されません。基本的な署名は次のようになります:
1 2 3 4 |
|
例 1:
1 2 3 4 5 6 7 8 9 |
|
在这种情况下,管道末端的错误处理中间件将会处理该错误。你可能还会注意到,我检查了 res.headersSent
属性。这只是检查响应是否已经将标头发送到客户端。如果还没有,它将向客户端发送 HTTP 500 状态和错误消息。
例2:
你还可以链接错误处理中间件。通常以不同的方式处理不同类型的错误:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
- 在这种情况下,中间件检查是否抛出了 404(not found)错误。如果是,它将渲染 “NotFound” 模板页面,然后将错误传递到中间件中的下一项。
- 下一个中间件检查是否抛出了 304(unauthorized)错误。如果是,它将渲染“Unauthorized”页面,并将错误传递到管道中的下一个中间件。
- 最后,“catch all” 错误处理仅记录错误,如果未发送响应,它将发送错误的 httpStatusCode(如果未提供则发送 HTTP 500 状态)并渲染 “UnknownError” 模板。
第三方级别的中间件
在某些情况下,我们将向后端添加一些额外的功能。先安装 Node.js 模块获取所需的功能,然后在应用级别或路由器级别将其加载到你的应用中。
示例:当 body-parser 处理 Content-Type 请求标头时,所有中间件都将使用解析的正文填充 req.body
属性。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
总结
中间件功能是一种非常好的方式,可以对每个请求或针对特定路由的每个请求运行代码,并对请求或响应数据采取措施。中间件是现代 Web 服务器的重要组成部分,并且非常有用。
更多编程相关知识,请访问:编程入门!!
以上がNode.jsミドルウェアの仕組みの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Tomcat ミドルウェアの原理は、Java Servlet および Java EE 仕様に基づいて実装されています。 Tomcat はサーブレット コンテナとして、HTTP リクエストとレスポンスを処理し、Web アプリケーションに実行環境を提供する役割を果たします。 Tomcat ミドルウェアの原理には主に次のものが含まれます: 1. コンテナ モデル; 2. コンポーネント アーキテクチャ; 3. サーブレット処理メカニズム; 4. イベント リスニングとフィルター; 5. 構成管理; 6. セキュリティ; 7. クラスタリングとロード バランシング; 8. コネクタテクノロジー; 9. エンベデッドモードなど

Laravel でデータ アクセラレーションのためのミドルウェアを使用する方法 はじめに: Laravel フレームワークを使用して Web アプリケーションを開発する場合、データ アクセラレーションがアプリケーションのパフォーマンスを向上させる鍵となります。ミドルウェアは、Laravel が提供する重要な機能で、リクエストがコントローラーに到達する前、または応答が返される前に処理します。この記事では、ミドルウェアを使用して Laravel でデータ高速化を実現する方法に焦点を当て、具体的なコード例を示します。 1. ミドルウェアとは何ですか? ミドルウェアはLaravelフレームワークの仕組みです。

Laravel での応答変換にミドルウェアを使用する方法 ミドルウェアは、Laravel フレームワークの非常に強力で実用的な機能の 1 つです。これにより、リクエストがコントローラーに入る前、またはレスポンスがクライアントに送信される前に、リクエストとレスポンスを処理できるようになります。この記事では、Laravel でレスポンス変換にミドルウェアを使用する方法を説明します。始める前に、Laravel がインストールされており、新しいプロジェクトが作成されていることを確認してください。次に、次の手順に従います。 新しいミドルウェアを作成する 開く

Laravel でスケジュールされたタスクのスケジューリングにミドルウェアを使用する方法 はじめに: Laravel は、Web アプリケーションを開発するための便利で強力なツールを提供する、人気のある PHP オープン ソース フレームワークです。重要な機能の 1 つはスケジュールされたタスクです。これにより、開発者は指定された間隔で特定のタスクを実行できます。この記事では、ミドルウェアを使用してLaravelのスケジュールされたタスクのスケジューリングを実装する方法と、具体的なコード例を紹介します。環境の準備 始める前に確認する必要があります

ミドルウェアを使用して Laravel でフォーム検証を処理する方法、特定のコード例が必要です はじめに: フォーム検証は Laravel で非常に一般的なタスクです。ユーザーが入力したデータの有効性と安全性を確保するために、当社は通常、フォームに送信されたデータを検証します。 Laravel は便利なフォーム検証機能を提供しており、フォーム検証を処理するためのミドルウェアの使用もサポートしています。この記事では、ミドルウェアを使用してLaravelでフォーム検証を処理する方法を詳しく紹介し、具体的なコード例を示します。

PHPのリアルタイム通信機能とメッセージプッシュミドルウェアの関係の分析 インターネットの発展に伴い、Webアプリケーションにおけるリアルタイム通信機能の重要性がますます高まっています。リアルタイム通信により、ユーザーはアプリケーション内でリアルタイムにメッセージを送受信できるようになり、リアルタイム チャット、即時通知などのさまざまなシナリオに適用できます。 PHP の分野では、リアルタイム通信機能を実装する方法は数多くありますが、一般的な方法の 1 つはメッセージ プッシュ ミドルウェアを使用することです。この記事では、PHPのリアルタイム通信機能とメッセージプッシュミドルウェアの関係と、メッセージプッシュの利用方法について紹介します。

CakePHP ミドルウェア: プッシュ通知とメッセージ リマインダーを統合してリアルタイム通知を実現 [はじめに] 最新のインターネット アプリケーションでは、リアルタイム通知は非常に重要な機能です。リアルタイムの通知を実現するために、通常はプッシュ通知とメッセージリマインダーを使用します。この記事では、CakePHP アプリケーションにプッシュ通知とメッセージリマインダーを統合して、リアルタイム通知機能を実現する方法を紹介します。 [プッシュ通知] プッシュ通知は主に、新着メッセージや注文状況の更新など、重要なリアルタイム情報をユーザーに送信するために使用されます。 CakePHP では次のことができます

CodeIgniter ミドルウェア: 安全なファイルのアップロードおよびダウンロード機能を提供します はじめに: Web アプリケーション開発のプロセスにおいて、ファイルのアップロードとダウンロードは非常に一般的な機能です。ただし、セキュリティ上の理由から、ファイルのアップロードとダウンロードの処理には追加のセキュリティ対策が必要になることがよくあります。 CodeIgniter は、開発者による安全で信頼性の高い Web アプリケーションの構築をサポートする豊富なツールとライブラリを提供する人気の PHP フレームワークです。この記事では、CodeIgniter ミドルウェアを使用して安全なファイルを実装する方法を紹介します。
