原生请求体

访问原生请求体的最常见用例之一是执行 webhook 签名验证。通常,在执行 webhook 签名验证时,需要未序列化的请求体来计算 HMAC 哈希。

警告 警告 该功能只能在启用了内置全局请求体解析中间件时使用,即在创建应用程序时不能传递 *splat

使用 Express

首先在创建 Nest Express 应用程序时启用选项:

const app = await NestFactory.create(AppModule);
app.setGlobalPrefix('v1');

在控制器中访问原生请求体,可以使用 convenience 接口 INLINE_CODE_9 exposing a INLINE_CODE_10 字段在请求上:使用接口 INLINE_CODE_11 类型:

app.setGlobalPrefix('v1', {
  exclude: [{ path: 'health', method: RequestMethod.GET }],
});

注册不同的解析器

默认情况下,只注册了 INLINE_CODE_12INLINE_CODE_13 解析器。如果您想在 runtime 注册不同的解析器,需要这样做。

例如,要注册一个 INLINE_CODE_14 解析器,可以使用以下代码:

app.setGlobalPrefix('v1', { exclude: ['cats'] });

警告 警告 确保您提供了正确的应用程序类型到 INLINE_CODE_15 调用中。对 Express 应用程序,正确的类型是 INLINE_CODE_16。否则, INLINE_CODE_17 方法将无法找到。

请求体大小限制

如果您的应用程序需要解析一个大于默认 INLINE_CODE_18 的请求体,可以使用以下代码:

CODE_BLOCK_3

INLINE_CODE_19 方法将尊重传递给应用程序选项的 INLINE_CODE_20 选项。

使用 Fastify

首先在创建 Nest Fastify 应用程序时启用选项:

CODE_BLOCK_4

在控制器中访问原生请求体,可以使用 convenience 接口 INLINE_CODE_21 exposing a INLINE_CODE_22 字段在请求上:使用接口 INLINE_CODE_23 类型:

CODE_BLOCK_5

注册不同的解析器

默认情况下,只注册了 INLINE_CODE_24INLINE_CODE_25 解析器。如果您想在 runtime 注册不同的解析器,需要这样做。

例如,要注册一个 INLINE_CODE_26 解析器,可以使用以下代码:

CODE_BLOCK_6

警告 警告 确保您提供了正确的应用程序类型到 INLINE_CODE_27 调用中。对 Fastify 应用程序,正确的类型是 INLINE_CODE_28。否则, INLINE_CODE_29 方法将无法找到。

请求体大小限制

如果您的应用程序需要解析一个大于默认 1MiB 的请求体,可以使用以下代码:

CODE_BLOCK_7

INLINE_CODE_30 方法将尊重传递给应用程序选项的 INLINE_CODE_31 选项。