我使用NodeJs/NestJs来构建RESTful服务。我创建了一些对象来匹配请求的JSON。在这些对象中,有一些可选属性,但如果客户端没有通过JSON发送它们,我希望为它们设置默认值。
如何实现这个目标最好的方法是什么?
这是我用来匹配JSON的DTO。
这是我的NestJs控制器。
我启动了服务,并向我的端点发布以下JSON:
在我的控制器中,我发现
如何实现这个目标最好的方法是什么?
这是我用来匹配JSON的DTO。
import { IsDefined, IsNumber, Min } from 'class-validator';
import { ApiModelProperty, ApiModelPropertyOptional } from '@nestjs/swagger';
export class RequestDto {
@IsDefined()
@IsNumber()
@Min(0)
@ApiModelProperty({description: 'The current age.'})
public CurrentAge: number;
@ApiModelPropertyOptional({description: 'The existing saving amount.'})
public ExistingSavingAmount: number = 0;
}
这是我的NestJs控制器。
import { Controller, Post, Body, Param } from '@nestjs/common';
import { RequestDto } from './Dto/Request.Dto';
import { ApiResponse, ApiOperation } from '@nestjs/swagger';
@Controller('mycontroller')
export class MyController {
@Post('MyEndPoint')
@ApiOperation({ title: 'Do something' })
@ApiResponse({ status: 201, description: 'Something is done' })
public doSomething(@Body() request: RequestDto) {
// do more jobs
}
}
我启动了服务,并向我的端点发布以下JSON:
{
"CurrentAge": 40,
}
在我的控制器中,我发现
ExistingSavingAmount
是空的,而不是有0的值。但是如果我直接实例化RequestDto
,我可以看到ExistingSavingAmount
的值是0。