@在NestJs中获取具有多个参数的DTO
我试图在NestJS中创建一个控制器操作,该操作可通过GET HTTP请求访问,该请求接收两个参数,但由于某些原因它们未定义 如何修复它@在NestJs中获取具有多个参数的DTO,nestjs,Nestjs,我试图在NestJS中创建一个控制器操作,该操作可通过GET HTTP请求访问,该请求接收两个参数,但由于某些原因它们未定义 如何修复它 @Get('/login') 登录(@Param()参数:LoginUserDto){ console.log(参数) 返回“OK” } 从'@nestjs/swagger'导入{ApiModelProperty}; 导出类LoginUserDto{ @ApiModelProperty() 只读用户名:字符串; @ApiModelProperty() 只读密
@Get('/login')
登录(@Param()参数:LoginUserDto){
console.log(参数)
返回“OK”
}
从'@nestjs/swagger'导入{ApiModelProperty};
导出类LoginUserDto{
@ApiModelProperty()
只读用户名:字符串;
@ApiModelProperty()
只读密码:字符串;
}
Nest不支持以这种方式将Get
查询参数自动转换为对象。您可以通过将参数的名称传递给@param
装饰器来单独拉出参数
尝试将您的签名更改为:
login(@Param('userName') userName: string, @Param('password') password: string)
如果您想接收一个对象,请考虑切换到使用<代码> POST <代码>,并将对象传递到请求体中(这对我来说对于登录行为来说是更有意义的)。
< P>浏览器localhost:3001/Products/v1/user2
像这样的控制器:
@Controller('Products')
export class CrashesController {
constructor(private readonly crashesService: CrashesService) { }
@Get('/:version/:user')
async findVersionUser(@Param('version') version: string, @Param('user') user: string): Promise<Crash[]> {
return this.crashesService.findVersionUser(version, user);
}
}
@控制器(“产品”)
导出类崩溃控制器{
构造函数(私有只读crashesService:crashesService){}
@获取('/:version/:user')
异步findVersionUser(@Param('version')版本:string,@Param('user')用户:string):承诺{
返回此.crashesService.findVersionUser(版本,用户);
}
}
现在我正在7.0.0上使用nestJs,如果您这样做:
@Get('/paramsTest3/:number/:name/:age')
getIdTest3(@Param() params:number): string{
console.log(params);
return this.appService.getMultipleParams(params);
}
console.log(params)结果将是(值仅为示例):
我希望在那之后我在某些方面对你有所帮助 假设您需要传递一个名为
id
的必需参数,您可以通过标题参数
发送它,您的可选参数可以通过查询参数
发送
@Get('/:id')
findAll(
@Param('id') patientId: string,
@Query() filter: string,
): string {
console.log(id);
console.log(filter);
return 'Get all samples';
}
有没有办法让这些参数中的一个成为可选的?例如:
@Get('/paramsTest3/:number/:name/:age?')
@MichaelLRhyndress如果您想这样做,我将使用JSON正文
@Get('/:id')
findAll(
@Param('id') patientId: string,
@Query() filter: string,
): string {
console.log(id);
console.log(filter);
return 'Get all samples';
}