我是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相关问答推荐

查询嵌套数组中的最后一个元素具有特定值的mongoDB集合中的文档

Express 4.18正文解析

如何修复PostgreSQL和NodeJS/NestJS应用程序之间的日期时间和时区问题?

如何使用NodeJS在mongodb中更新文档

在 TypeScript 中正确键入 MongoDB find 方法

如何在 node /快速服务器上配置 mongoDB

错误 node :错误:绑定消息提供 16 个参数,但准备语句需要 15 个

在 Atlas 触发器(Node JS)中正确初始化 Firebase 管理 SDK

NodeJS 后端发布请求将数据作为NULL值发布到 SQL Server 表

Handlebars:访问已被拒绝解析来自的属性,因为它不是其父级的自己的属性

您如何写入 aws lambda 实例的文件系统?

使用 Node.js 在内存中缓冲整个文件

在 PassportJS 中使用多种本地策略

如何运行用 TypeScript 编写的 Mocha 测试?

如何在 NodeJs 中下载和解压缩内存中的 zip 文件?

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

如何从 npm 注册表中删除 npm 包?

如何判断MongoDB本机nodejs驱动程序中是否存在集合?

在 Node.js 上使用 Connect 无法获取 /

将 expressjs 绑定到特定的 IP 地址