You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
hutao/reference/P01CentralControl/docs/fastify的request和reply.md

25 lines
1.8 KiB

8 months ago
在 Fastify 框架中,`request` 和 `reply` 是对 HTTP 请求和响应的封装,并传递给每个路由处理函数。它们分别提供了丰富的 API 来处理传入的请求和构造回去的响应。
1. **request**: 表示一个传入的 HTTP 请求。它具有多个属性和方法,用来访问请求的内容,例如:
- `request.body`: 包含了 POST、PATCH 或 PUT 请求中的 payload。
- `request.query`: 包含了 URL 查询字符串的键值对。
- `request.params`: 包含了路由参数。
- `request.headers`: 包含了请求头的键值对。
- `request.raw`: Fastify 为了性能考虑并不会对 Node.js 原生的 `request` 对象进行重量级的包装,所以 `request.raw` 就是原始的 Node.js HTTP 请求对象。
- `request.log`: 用于记录日志的 logger 实例。
此外,还有很多其他的属性和方法,你可以用来操作和获取有关请求的其他细节。
2. **reply**: 表示对于客户端请求的响应。它封装了多个定义和发送 HTTP 响应的方法,例如:
- `reply.code(statusCode)`: 设置 HTTP 响应的状态代码。
- `reply.header(name, value)`: 设置 HTTP 响应头。
- `reply.send(payload)`: 发送响应数据到客户端,这里的 payload 可以是一个字符串、Buffer、对象等。
- `reply.type(contentType)`: 简便方法设置 `Content-Type` 响应头。
- `reply.raw`: 和 `request.raw` 类似,`reply.raw` 就是原始的 Node.js HTTP 响应对象。
就像 `request` 一样,`reply` 提供了其他的方法和属性来处理 HTTP 响应。
这些封装提供了快捷的方法操作请求和响应,而不必深入了解底层的 Node.js HTTP API。Fastify 的设计也为高性能优化,避免不必要的封装和抽象。