我尝试使用Nestjs库替换我们当前的后端服务,但是,我想在URL中使用2个可选参数创建一个路由,如下所示:/route/:param1/config/:OptionalParam3?/:OptionalParam3?这意味着这条路线应该赶上:
/route/:param1/config/:OptionalParam3?/:OptionalParam3?
route/aa/config
route/aa/config/bb
route/aa/config/bb/cc
?
()
6psbrbz91#
路由器参数名称应该是唯一的。正确的路由路径是:现有的一种是:
更正:
/route/:param1/config/:OptionalParam3?/:OptionalParam4?
意见:如果参数是可选的,你可以使用查询参数。创建可选的参数路径从来都不是一个好主意(同意不同意见)。两者的目的是一样的,但是使用它们作为查询参数会让调试人员和其他开发人员更容易理解。
r1zhe5dt2#
如果您正在寻找如何注解选择性查询参数,您可以这样做:
@ApiQuery({ name: "myParam", type: String, description: "A parameter. Optional", required: false }) async myEndpoint( @Query("myParam") myParam?: string ): Promise<blah> { [...] }
9rnv2umw3#
我通过使用@Query装饰器解决了这个问题,如下所示:下面是我的控制器:
@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}` ); }
e0bqpujr4#
您可以使用此结构:
4条答案
按热度按时间6psbrbz91#
路由器参数名称应该是唯一的。正确的路由路径是:
现有的一种是:
更正:
意见:如果参数是可选的,你可以使用查询参数。创建可选的参数路径从来都不是一个好主意(同意不同意见)。两者的目的是一样的,但是使用它们作为查询参数会让调试人员和其他开发人员更容易理解。
r1zhe5dt2#
如果您正在寻找如何注解选择性查询参数,您可以这样做:
9rnv2umw3#
我通过使用
@Query
装饰器解决了这个问题,如下所示:下面是我的控制器:
下面是我的客户端(Angular)服务:
e0bqpujr4#
您可以使用此结构:
它将适用于以下路线:路由/aa/配置/{任何内容}