📅  最后修改于: 2023-12-03 15:05:39.281000             🧑  作者: Mango
在使用 Typescript 编写 Express 应用程序时,如何为路由添加自定义中间件是一个普遍的需求。中间件可以充当请求处理管道中的一个过滤器,用于执行各种操作,例如验证、记录、缓存等。
本文将介绍如何编写一个基本的 Typescript Express 中间件,向程序员提供有关创建自定义中间件的详细指南。
首先,我们需要在本地计算机上安装 Node.js 和 Typescript。安装完成后,我们可以使用以下命令创建一个新的 Typescript Express 应用程序:
mkdir myapp
cd myapp
npm init -y
npm install express
npm install @types/express
npm install typescript -D
在执行 npm init -y
命令后,会生成一个名为 package.json
的文件。在该文件中添加以下内容:
{
"name": "myapp",
"version": "1.0.0",
"description": "",
"main": "dist/index.js",
"scripts": {
"build": "tsc",
"start": "node dist/index.js"
},
"author": "",
"license": "ISC"
}
上述代码中,我们添加了两个新的脚本:build
和 start
。通过运行 npm run build
命令可以将 Typescript 代码编译为 JavaScript 代码,并将其存储在 dist/
文件夹中。npm run start
命令将执行存储在 dist/index.js
中的 JavaScript 代码,启动 Express 应用程序。
现在,我们将创建一个名为 index.ts
的文件,并添加以下内容:
import express, { Request, Response } from 'express';
const app = express();
app.get('/', (req: Request, res: Response) => {
res.send('Hello World!');
});
app.listen(3000, () => {
console.log('Server running on port 3000');
});
我们使用 import
语句导入 express
和 Request
/ Response
对象。在代码中,我们创建一个新 express
应用程序实例,并通过调用 get()
方法将一个简单的路由添加到路由表中。
在执行 npm run start
命令后,我们可以在浏览器中打开 http://localhost:3000
,看到 Hello World!
的消息。
现在,我们将创建一个名为 my-middleware.ts
的新文件,并添加以下内容:
import { Request, Response, NextFunction } from 'express';
export function myMiddleware(req: Request, res: Response, next: NextFunction) {
console.log('Executing middleware');
next();
}
上述代码中,我们定义了一个名为 myMiddleware
的函数,该函数接受 Express 的 Request
、Response
和 Next
参数。在函数中,我们打印一条消息,并调用 next()
方法将请求传递到下一个中间件或路由处理程序。
要将自定义中间件添加到我们的 Express 应用程序中,我们需要做两个步骤。
第一步是导入 myMiddleware
函数,如下所示:
import express, { Request, Response } from 'express';
import { myMiddleware } from './my-middleware';
const app = express();
app.use(myMiddleware);
app.get('/', (req: Request, res: Response) => {
res.send('Hello World!');
});
app.listen(3000, () => {
console.log('Server running on port 3000');
});
通过调用 app.use()
方法,我们将 myMiddleware
添加到 Express 应用程序的中间件堆栈中。如上所示,这将使 myMiddleware
在每个传入请求上执行。
第二步是在每个需要使用自定义中间件的路由中添加它,如下所示:
import express, { Request, Response } from 'express';
import { myMiddleware } from './my-middleware';
const app = express();
app.use(myMiddleware);
app.get('/', (req: Request, res: Response) => {
res.send('Hello World!');
});
app.get('/test', myMiddleware, (req: Request, res: Response) => {
res.send('This is a test route');
});
app.listen(3000, () => {
console.log('Server running on port 3000');
});
在上面的示例中,我们定义了另一个路由 /test
,将 myMiddleware
添加为第二个参数,并输出“这是一个测试路由”的消息。这意味着 /test
路由将执行 myMiddleware
中间件,但 /
路由不会执行它。
通过参照本文介绍的步骤,我们可以轻松地创建自己的自定义 Typescript Express 中间件。中间件可以用来执行各种操作,例如验证、记录、缓存等。这是在 Express 应用程序中添加自定义功能的一种好方法。