Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
@在NestJs中获取具有多个参数的DTO_Nestjs - Fatal编程技术网

@在NestJs中获取具有多个参数的DTO

@在NestJs中获取具有多个参数的DTO,nestjs,Nestjs,我试图在NestJS中创建一个控制器操作,该操作可通过GET HTTP请求访问,该请求接收两个参数,但由于某些原因它们未定义 如何修复它 @Get('/login') 登录(@Param()参数:LoginUserDto){ console.log(参数) 返回“OK” } 从'@nestjs/swagger'导入{ApiModelProperty}; 导出类LoginUserDto{ @ApiModelProperty() 只读用户名:字符串; @ApiModelProperty() 只读密

我试图在NestJS中创建一个控制器操作,该操作可通过GET HTTP请求访问,该请求接收两个参数,但由于某些原因它们未定义

如何修复它

@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';
  }