NodeJS 如何在NestjS中使用可选的url参数

db2dz4w8  于 2022-12-03  发布在  Node.js
关注(0)|答案(4)|浏览(194)

我尝试使用Nestjs库替换我们当前的后端服务,但是,我想在URL中使用2个可选参数创建一个路由,如下所示:
/route/:param1/config/:OptionalParam3?/:OptionalParam3?
这意味着这条路线应该赶上:

  1. route/aa/config
  2. route/aa/config/bb
  3. route/aa/config/bb/cc
    我如何才能做到这一点,我尝试使用?(),但效果不佳。
6psbrbz9

6psbrbz91#

路由器参数名称应该是唯一的。正确的路由路径是:
现有的一种是:

/route/:param1/config/:OptionalParam3?/:OptionalParam3?

更正:

/route/:param1/config/:OptionalParam3?/:OptionalParam4?

意见:如果参数是可选的,你可以使用查询参数。创建可选的参数路径从来都不是一个好主意(同意不同意见)。两者的目的是一样的,但是使用它们作为查询参数会让调试人员和其他开发人员更容易理解。

r1zhe5dt

r1zhe5dt2#

如果您正在寻找如何注解选择性查询参数,您可以这样做:

@ApiQuery({
  name: "myParam",
  type: String,
  description: "A parameter. Optional",
  required: false
})
async myEndpoint(
  @Query("myParam") myParam?: string
): Promise<blah> { 
  [...] 
}
9rnv2umw

9rnv2umw3#

我通过使用@Query装饰器解决了这个问题,如下所示:
下面是我的控制器:

@Get()
async getAll(@Query('someParameter') someParameter?: number) {
  return this.service.getAll(someParameter);
}

下面是我的客户端(Angular)服务:

getAll(someParameter?: number) {
  return this.http.get(`apiUrl/controllerAddress?someParameter=${someParameter}`
  );
}
e0bqpujr

e0bqpujr4#

您可以使用此结构:

  • 路由-aa -配置-... id.js
    它将适用于以下路线:路由/aa/配置/{任何内容}

相关问题