jrr*_*asm 5 parameters routes nestjs
你好,我想在 NestJS 中匹配一条路由,如下所示:
@Controller('posts')
export class PostsController {
@Get(:id)
getPostById() {}
@Get(:slug)
getPostBySlug() {}
}
Run Code Online (Sandbox Code Playgroud)
问题是请求永远不会命中 slug 路由,如何配置路由以使 id 仅与数字匹配,而第二个仅与字母和破折号匹配?
非常感谢 :)
小智 7
看起来 @nest/common 依赖项中有一个正则表达式包的路径,我检查过 - 你真的可以使用它。
https://www.npmjs.com/package/path-to-regexp
现在您可以通过设置正则表达式使 id 仅匹配数字:
@Get('/:id(\\d+)')
Run Code Online (Sandbox Code Playgroud)
我在NestJS官方文档中没有找到功能描述,但它是有效的。我的@nest/common 软件包版本是8.4.1。
这是不可能的,因为当 Express 或 Fastify 为此设置路由器时,它只是查看与正则表达式匹配的内容,并且没有限定符表示“这专门是一个slug”或“这绝对是一个id”,因此所有 Express或者 Fastify 能做的就是匹配第一条路由。您需要在控制器或服务中设置一个开关来根据参数调用任一方法,或者您需要在使用 URL 参数之前使路由可识别。@Get('/id/:id')或者@Get('/slug/:slug')
| 归档时间: |
|
| 查看次数: |
5266 次 |
| 最近记录: |