Json 请求正文未被 NestJs 处理

Json request body not handled by NestJs

我实现了一个 NestJs 控制器,然后是一个监听 POST 请求的外观服务,在请求到达后,它会执行一些操作。

现在,它适用于“text/plain”内容类型,但不适用于“application/json”内容类型。 身材一模一样

这是控制器中的方法:

  @Public()
  @Post(SERVER_COVID_A_CASA_CARE_PLAN_NOTIFICATION_PATH)
  getNotification(@Req() request: Request, @Res() response: Response) {
    this.facade.manageCarePlanNotification(request, response);
  }

这是门面服务中的方法:

manageCarePlanNotification(request: Request, response: Response) {
    let jsonBodyReq = '';

    request.on('data', function (data) {
      jsonBodyReq += data;
    });

    request.on('end', () => {
      this.manageCarePlanNotificationRequest(jsonBodyReq, response);
    });

    request.on('error', function (e) {
      console.log(e.message);
    });
  }

json中的请求到达控制器,到达manageCarePlanNotification方法,但没有到达on(data)事件,text/plain请求正确到达(同样发生在 on(end) 事件中)。

任何帮助将不胜感激! :) 谢谢

再造轮子干什么?

NestJS 可以帮你 req/res 。它是抽象的 req/res,因此首先它与平台无关 (Express/Fastify),而且您不必担心处理它并像您那样陷入麻烦。

当你使用 Nest 时,你应该简单地使用 @Body data: YourDataTypeInJSON 并像这样做:

  @Public()
  @Post(SERVER_COVID_A_CASA_CARE_PLAN_NOTIFICATION_PATH)
  getNotification(@Body() data: IDontKnowYourDataType) {
    return this.facade.manageCarePlanNotificationRequest(data);
  }