我是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 将显示状态代码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
// ...

Node.js相关问答推荐

赫斯基添加命令已弃用?

正在try 使用Azure Function App上载文件时未上载文件(&Q;)

如何在.npmrc中添加 comments ?

如何在MEVN堆栈中结合创建和更新表单流程?

请求正文未定义

即使卷已设置,Docker Nodemon 也不会热重载

在 puppeteer 中从 pdf 中删除 about:blank 和 date-time

Solidity 将数据位置从内存更改为存储

将环境变量从 GitHub 操作传递到 json

(Mongoose) 删除 TTL 字段失败

如何从哪个应用程序用户中找到在 Firebase 身份验证中进行身份验证的用户

使用mongoose 创建新文档并仅取回选定的字段

[NodeJs 从 ADAL 升级到 MSAL]:无法在字符串上创建属性authenticationScheme

如何在 TypeScript 中输出 Hackerrank 二叉树问题?

如果我使用像 express 这样的 node 服务器,是否需要 webpack-dev-server

Node.js + Express 上的多个视图路径

安全沙箱并执行用户提交的 JavaScript?

使用 Webpack 和 font-face 加载字体

node.js(ES6 / Babel)中 import X 和 import * as X 的区别?

Mongoose - 保存字符串数组