【问题标题】:NestJS - Route with ID returns 404NestJS - 带有 ID 的路由返回 404
【发布时间】:2021-01-15 00:26:35
【问题描述】:

我是 NestJS 的新手,所以我显然做错了什么,但无法弄清楚它是什么。

问题:

我有一个带有 ID 和文本的路由(`/:id/video`),当我尝试对其发出 HTTP 请求时,我得到 404 响应。

在同一个控制器中,我的路由后面没有文本 (/:id),它工作得很好。

代码:

我的整个控制器看起来像下面的代码。只是提醒控制器在模块等中正确使用,因为其他端点工作正常。
@Controller('channel')
export class ChannelController extends CrudController<Channel> {

constructor(
    private readonly channelService: ChannelService,
    private readonly videoService: VideoService
) {
    super(channelService);
}

@Get()    
async findAll(@Query() params): Promise<Pagination<Channel>> {
    return this.channelService.findAll({take: params.take, skip: params.skip, relations: ['language']});
}

@Get('/:id')
async findOne(@Param('id') id) {
    return this.channelService.findOne({relations: ['language']});
}

@Get('/:id/video')
async findVideosByChannelId(@Param('id') id) {
    return this.channelService.findOne({relations: ['language']});        
}

}

错误:

{"statusCode":404,"message":"Cannot GET /channel/3/video","error":"Not Found"}

欢迎大家提出想法或提示我做错了什么。

【问题讨论】:

  • 去掉斜线即可:@Get('/:id/video') =&gt; @Get(':id/video')

标签: javascript node.js express nestjs


【解决方案1】:

就像 MorKadosh 说的那样,删除斜线,因为 NestJS 默认添加第一个斜线,如果你不删除它,你的最终端点将是这样的:

http://localhost:3000/channel//:id

【讨论】:

    猜你喜欢
    • 2021-08-23
    • 2017-04-21
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    • 2013-07-27
    • 2021-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多