我是Nest.js的新生。

我的代码如下

  @Get('findByFilter/:params')
  async findByFilter(@Query() query): Promise<Article[]> {

  }

我已使用postman测试此路由器

http://localhost:3000/article/findByFilter/bug?google=1&baidu=2

实际上,我可以获取查询结果{ google: '1', baidu: '2' }。但是我不清楚为什么URL有一个字符串'bug'吗?

如果我删除那个词就像

http://localhost:3000/article/findByFilter?google=1&baidu=2

然后 postman 将显示statusCode 404

实际上,我不需要单词bug,就像http://localhost:3000/article/findByFilter?google=1&baidu=2一样,如何自定义路由器以实现我的目的地

这是另一个问题,如何使多个路由器指向一种方法?

最佳答案

您必须删除:params才能使其按预期工作:

@Get('findByFilter')
async findByFilter(@Query() query): Promise<Article[]> {
  // ...
}
:param语法用于路径参数,并匹配路径上的任何字符串:
@Get('products/:id')
getProduct(@Param('id') id) {

符合路线
localhost:3000/products/1
localhost:3000/products/2abc
// ...

路由通配符

要将多个端点匹配到相同的方法,可以使用路由通配符:
@Get('other|te*st')

将匹配
localhost:3000/other
localhost:3000/test
localhost:3000/te123st
// ...

07-24 17:11