javascript 在NestJS中验证@Param

z4bn682m  于 2023-05-12  发布在  Java
关注(0)|答案(2)|浏览(137)

如何在NestJS中验证路径变量,例如:

update(@Param('id') id: number, @Body() updateSite: UpdateSiteDto) {
      // ...body
}

我只是想验证id是否为正数(> 0),而不需要 Package 类。

gjmwrych

gjmwrych1#

这是一个有用的问题。
我使用自定义管道来验证id参数
步骤1:创建pipe.ts文件:

import { PipeTransform, Injectable, BadRequestException } from '@nestjs/common';

@Injectable()
export class PositiveNumberValidationPipe implements PipeTransform {
  async transform(value: number) {
    if (value <= 0) {
      throw new BadRequestException('id is positive number');
    }
    return value;
  }
}

步骤2:通过导入文件pipe.ts在Controller文件中使用它

@Post('/users/:id')
update(
    @Param('id', PositiveNumberValidationPipe) id: number,
    @Body() updateSite: UpdateSiteDto,
) {
    // ...body
}

如果您发送非正数,则会收到以下结果:

{
  "statusCode": 400,
  "message": "id is positive number",
  "error": "Bad Request"
}

对我来说效果很好!

x7yiwoj4

x7yiwoj42#

你可以在下面的正文中检查id

update(@Param('id') id: number, @Body() updateSite: UpdateSiteDto) {
   if (id < 1) {
     throw new BadRequestException('ID_MUST_BE_POSITIVE');
   }
   // ...body
 }

相关问题