首页 前端知识 如何Request在 TypeScript 中扩展 Express 对象

如何Request在 TypeScript 中扩展 Express 对象

2024-08-15 22:08:11 前端知识 前端哥 815 528 我要收藏

Express 使用该Request对象向 Node.js 服务器的控制器提供有关 HTTP 请求的数据。因此,应用层可用的请求中的所有数据都依赖于该对象。

您可能需要详细说明您在 HTTP 请求中收到的数据,并向控制器提供自定义信息。在 JavaScript 中,您可以简单地在对象中定义新属性Request并在需要时使用它们。Request在 TypeScript 中,如果要定义自定义属性,则需要扩展类型。

现在让我们了解RequestExpress 中的内容,并深入探讨Request在 TypeScript 中扩展类型有用的原因。然后,让我们看看如何Request通过使用 TypeScript 构建的 Express 演示应用程序来利用扩展对象。

TL;DR:让我们学习如何Request在 TypeScript 中扩展类型以使其实例存储您可以在控制器级别使用的自定义数据。

  • Express 中的 Request 对象是什么?

  • 为什么要扩展请求?

  • 在 TypeScript 中扩展 Express Request 类型

    • 先决条件

    • 将自定义属性添加到请求类型

  • 使用扩展的 Request 对象

  • 测试扩展请求

RequestExpress中的对象是什么?

该Request对象表示客户端对 Express 服务器执行的 HTTP 请求。换句话说,Express 服务器可以通过Request实例读取从客户端接收到的数据。因此,Request有几个属性可以访问 HTTP 请求中包含的所有信息,但最重要的是:

  • query

    :此对象包含请求 URL 中存在的每个查询字符串参数的属性:

    app.get("/users", (req: Request, res: Response) => {
      // on GET "/users?id=4" this would print "4"
      console.log(req.query.id)
    });
  • params

    :此对象包含根据

    Express 路由约定

    在 API URL 中定义的参数:

    app.get("/users/:id", (req: Request, res: Response) => {
      // on GET "/users/1" this would print "1"
      console.log(req.params.id)
    });
  • body

    :此对象包含在 HTTP 请求正文中提交的键值对数据:

    app.get("/users", (req: Request<never, never, { name: string; surname: string }, never>, res: Response) => {
      const { name, surname } = req.body
    ​
      // ...
    })
  • headers:此对象包含请求发送的每个 HTTP 标头的属性。

  • cookies:使用cookie-parserExpress 中间件时,该对象包含请求发送的每个 cookie 的属性

为什么要延长Request?

Express 控制器可以使用该对象访问包含在 HTTP 请求中的所有数据Request。这并不意味着Request对象是与控制器交互的唯一方式。相反,Express 也支持中间件。Express 中间件是可用于添加应用程序级或路由器级功能的功能。

中间件功能与路由器级别的端点相关联,如下所示:

const authenticationMiddleware = require("../middlewares/authenticationMiddleware")
const FooController = require("../controllers/foo")
​
app.get(
  "/helloWorld",
  FooController.helloWorld, // (req, res) => { res.send("Hello, World!") }
  // registering the authenticationMiddleware to the "/helloWorld" endpoint
  authenticationMiddleware,
)

请注意,中间件函数在调用包含 API 业务逻辑的控制器函数之前执行。在此处了解有关它们如何工作以及 Express 中间件可以提供的更多信息。

这里需要注意的重要一点是中间件可以修改Request对象,添加自定义信息以使其在控制器级别可用。iPhone14用户抱怨蓝牙问题、性能问题及潜在问题的修复方法例如&#

转载请注明出处或者链接地址:https://www.qianduange.cn//article/15700.html
标签
express
评论
发布的文章

JQuery 详细教程

2024-08-21 22:08:08

jQuery2 高级教程(八)

2024-08-21 22:08:06

jQuery Spellchecker 使用教程

2024-08-21 22:08:50

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!