如何在 Nest.js 中使用查询参数?

新手上路,请多包涵

我是 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

然后邮递员将显示 statusCode 404

其实我不需要 bug 这个词,如何自定义路由器来实现我的目的地就像 http://localhost:3000/article/findByFilter?google=1&baidu=2

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

原文由 Eve-Sama 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 748
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
// ...

原文由 Kim Kern 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果您将参数作为部分或 url: /articles/${articleId}/details ,您将使用 @Param

 @Get('/articles/:ARTICLE_ID/details')
async getDetails(
    @Param('ARTICLE_ID') articleId: string
)

如果您想提供查询参数 /article/findByFilter/bug? google=1&baidu=2 ,你可以使用

@Get('/article/findByFilter/bug?')
async find(
    @Query('google') google: number,
    @Query('baidu') baidu: number,
)

原文由 Dennis R 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题