NestJS — маршрут с идентификатором возвращает 404

#javascript #node.js #express #nestjs

#javascript #node.js #экспресс #nestjs

Вопрос:

Я новичок в NestJS, поэтому я, очевидно, делаю что-то не так, но не могу понять, что это такое.

Проблема:

У меня есть маршрут с идентификатором и текстом сразу после него (`/: 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"}
  

Ребята, приветствуется идея или подсказка, что я делаю неправильно.

Комментарии:

1. Просто удалите косые черты: @Get('/:id/video') => @Get(':id/video')

Ответ №1:

Как и сказал Моркадош, удалите косую черту, потому что NestJS добавляет первую косую черту по умолчанию, если вы ее не удалите, ваша конечная точка будет примерно такой:

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