如何在 NestjS 中使用可选的 url 参数
how to use optional url parameters with NestjS
我正在尝试使用 Nestjs 库替换我们当前的后端服务,
但是,我想在 URL 中创建一个带有 2 个可选参数的路由,例如:
/route/:param1/config/:OptionalParam3?/:OptionalParam3?
这意味着路线应该赶上:
route/aa/config
route/aa/config/bb
route/aa/config/bb/cc
我怎样才能做到这一点,我尝试使用 ?
和 ()
但效果不佳。
路由器参数名称应该是唯一的。正确的路由路径是:
现有的是:
/route/:param1/config/:OptionalParam3?/:OptionalParam3?
更正:
/route/:param1/config/:OptionalParam3?/:OptionalParam4?
意见:如果参数是可选的,则可以使用查询参数。创建可选的参数路由从来都不是一个好主意(同意分歧)。两者的目的相同,但将它们作为查询参数可以让调试和其他开发人员更容易理解。
如果您正在寻找如何注释可选查询参数,您可以这样做:
@ApiQuery({
name: "myParam",
type: String,
description: "A parameter. Optional",
required: false
})
async myEndpoint(
@Query("myParam") myParam?: string
): Promise<blah> {
[...]
}
我使用 @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}`
);
}
我正在尝试使用 Nestjs 库替换我们当前的后端服务, 但是,我想在 URL 中创建一个带有 2 个可选参数的路由,例如:
/route/:param1/config/:OptionalParam3?/:OptionalParam3?
这意味着路线应该赶上:
route/aa/config
route/aa/config/bb
route/aa/config/bb/cc
我怎样才能做到这一点,我尝试使用 ?
和 ()
但效果不佳。
路由器参数名称应该是唯一的。正确的路由路径是:
现有的是:
/route/:param1/config/:OptionalParam3?/:OptionalParam3?
更正:
/route/:param1/config/:OptionalParam3?/:OptionalParam4?
意见:如果参数是可选的,则可以使用查询参数。创建可选的参数路由从来都不是一个好主意(同意分歧)。两者的目的相同,但将它们作为查询参数可以让调试和其他开发人员更容易理解。
如果您正在寻找如何注释可选查询参数,您可以这样做:
@ApiQuery({
name: "myParam",
type: String,
description: "A parameter. Optional",
required: false
})
async myEndpoint(
@Query("myParam") myParam?: string
): Promise<blah> {
[...]
}
我使用 @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}`
);
}