ミドルウェアの使用
Express はルーティングおよびミドルウェアの Web フレームワークで、独自の最小限の機能を持っています。Express アプリケーションは、基本的にはミドルウェア関数の一連の呼び出しです。
Middleware 関数は、request object (req) にアクセスできる関数です。 response object (res) と、アプリケーションのリクエストレスポンスサイクルの次のミドルウェア関数。 次のミドルウェア関数は通常nextという名前の変数で表されます。 次のミドルウェア関数は通常nextという名前の変数で表されます。
ミドルウェア機能は以下のタスクを実行できます。
- 任意のコードを実行します。
- リクエストとレスポンスオブジェクトに変更を加えます。
- リクエストレスポンスサイクルを終了します。
- スタック内の次のミドルウェア関数を呼び出します。
現在のミドルウェア関数がリクエスト応答サイクルを終了しない場合は、次のミドルウェア関数に制御を渡すために next() を呼び出す必要があります。 そうでなければ、リクエストはハングアップのままになります。 そうでなければ、リクエストはハングアップのままになります。
Express アプリケーションでは、次のタイプのミドルウェアを使用できます。
- Application-level middleware
- Router-level middleware
- Error-handling middleware
- Built-in middleware
- Third-party middleware
アプリケーションレベルおよびルーターレベルのミドルウェアは、任意のマウントパスでロードできます。 また、一連のミドルウェア関数を一緒にロードして、マウントポイントでミドルウェアシステムのサブスタックを作成することもできます。 また、一連のミドルウェア関数を一緒にロードして、マウントポイントでミドルウェアシステムのサブスタックを作成することもできます。
アプリケーションレベルのミドルウェア
app.use() と app() を使用して、アプリケーションレベルのミドルウェアを app object のインスタンスにバインドします。 ETHOD()関数。METHODはミドルウェア関数が小文字で処理するHTTPメソッドです(GET、PUT、POSTなど)。
この例では、マウントパスのないミドルウェア関数を示します。 この関数はアプリがリクエストを受け取るたびに実行されます。 この関数はアプリがリクエストを受け取るたびに実行されます。
const express = require('express');const app = express();
app.use((req, res, next) => { console.log('Time:', Date.now()); next();});import express from 'express';
const app = express();
app.use((req, res, next) => { console.log('Time:', Date.now()); next();});import express, { type Express, type Request, type Response, type NextFunction } from 'express';
const app: Express = express();
app.use((req: Request, res: Response, next: NextFunction) => { console.log('Time:', Date.now()); next();});This example shows a middleware function mounted on the /user/:id path. この例では、/user/:id パスにマウントされたミドルウェア関数を示します。 関数は /user/:id パス上の任意のタイプの
HTTP リクエストに対して実行されます。
app.use('/user/:id', (req, res, next) => { console.log('Request Type:', req.method); next();});import { type Request, type Response, type NextFunction } from 'express';
app.use('/user/:id', (req: Request, res: Response, next: NextFunction) => { console.log('Request Type:', req.method); next();});This example shows a route and its handler function (middleware system). この例ではルートとハンドラ関数(ミドルウェアシステム)を示します。 関数は/user/:idパスへのGETリクエストを処理します。
app.get('/user/:id', (req, res, next) => { res.send('USER');});import { type Request, type Response, type NextFunction } from 'express';
app.get('/user/:id', (req: Request, res: Response, next: NextFunction) => { res.send('USER');});Here is an example of loading a series of middleware functions at a mount point, with a mount path.
It illustrates a middleware sub-stack that prints request info for any type of HTTP request to the /user/:id path.