如何让NestJS正确识别两个API路径映射?
问题原因与解决方案
问题出在NestJS的路由匹配优先级上:动态路由:arg1/:arg2会优先匹配所有两级路径的请求,当你访问/show/config时,框架会把show识别为arg1参数、config识别为arg2参数,直接命中pathMappingTest接口,导致showConfig接口永远不会被触发。
解决方法
1. 调整路由定义顺序
将固定路径的路由放在动态路由前面,NestJS会按照定义顺序匹配路由,优先命中固定路径:
// 先定义固定路径路由 @Get('show/config') showConfig(): string { return this.appService.showConfig(); } // 后定义动态参数路由 @Get(':arg1/:arg2') pathMappingTest(): string { return 'pathMappingTest'; }
2. 给动态路由添加专属前缀(可选)
如果不想调整顺序,可以给动态路由添加专属前缀,避免和固定路径冲突:
@Get('params/:arg1/:arg2') pathMappingTest(): string { return 'pathMappingTest'; } @Get('show/config') showConfig(): string { return this.appService.showConfig(); }
此时访问动态路由需要用http://localhost:3000/params/arg1/arg2,/show/config即可正常匹配。
内容的提问来源于stack exchange,提问作者tuioku
相关产品推荐
相关产品推荐

