Shc*_*ori 3 node.js express typescript nestjs fastify
我正在尝试使用 Nestjs 库替换我们当前的后端服务,但是,我想在 URL 中创建一个带有 2 个可选参数的路由,例如:
/route/:param1/config/:OptionalParam3?/:OptionalParam3?
这意味着路线应该赶上:
route/aa/configroute/aa/config/bbroute/aa/config/bb/cc我怎样才能做到这一点,我曾尝试使用?,()但效果不佳。
Ale*_*oVD 23
如果您正在寻找如何注释可选查询参数,您可以这样做:
@ApiQuery({
name: "myParam",
type: String,
description: "A parameter. Optional",
required: false
})
async myEndpoint(
@Query("myParam") myParam?: string
): Promise<blah> {
[...]
}
Run Code Online (Sandbox Code Playgroud)
小智 8
路由器参数名称应该是唯一的。正确的路径是:
现有的一种是:
/route/:param1/config/:OptionalParam3?/:OptionalParam3?
Run Code Online (Sandbox Code Playgroud)
更正:
/route/:param1/config/:OptionalParam3?/:OptionalParam4?
Run Code Online (Sandbox Code Playgroud)
意见:如果参数是可选的,您可以使用查询参数。创建可选的参数路由从来都不是一个好主意(达成一致意见)。两者都有相同的目的,但将它们作为查询参数可以让调试和其他开发人员更容易理解。
我通过使用@Query装饰器解决了这个问题,如下所示:
这是我的控制器:
@Get()
async getAll(@Query('someParameter') someParameter?: number) {
return this.service.getAll(someParameter);
}
Run Code Online (Sandbox Code Playgroud)
这是我的客户端(Angular)服务:
getAll(someParameter?: number) {
return this.http.get(`apiUrl/controllerAddress?someParameter=${someParameter}`
);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7201 次 |
| 最近记录: |