📜  typescript express 下一个中间件类型 - Javascript (1)

📅  最后修改于: 2023-12-03 15:05:39.281000             🧑  作者: Mango

Typescript Express 下一个中间件类型 - Javascript

在使用 Typescript 编写 Express 应用程序时,如何为路由添加自定义中间件是一个普遍的需求。中间件可以充当请求处理管道中的一个过滤器,用于执行各种操作,例如验证、记录、缓存等。

本文将介绍如何编写一个基本的 Typescript Express 中间件,向程序员提供有关创建自定义中间件的详细指南。

前置知识
  • 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"
}

上述代码中,我们添加了两个新的脚本:buildstart。通过运行 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 语句导入 expressRequest / Response 对象。在代码中,我们创建一个新 express 应用程序实例,并通过调用 get() 方法将一个简单的路由添加到路由表中。

在执行 npm run start 命令后,我们可以在浏览器中打开 http://localhost:3000,看到 Hello World! 的消息。

步骤二:创建自定义 Typescript Express 中间件

现在,我们将创建一个名为 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 的 RequestResponseNext 参数。在函数中,我们打印一条消息,并调用 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 应用程序中添加自定义功能的一种好方法。