#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