Routes 如何在带有nestjs的管线中使用参数?
我想使用3条路线:“项目”项目/1';'项目/作者”。 但是当我调用“project/authors”时,触发了“project/1”,我得到了一个错误。如何避免它Routes 如何在带有nestjs的管线中使用参数?,routes,nestjs,Routes,Nestjs,我想使用3条路线:“项目”项目/1';'项目/作者”。 但是当我调用“project/authors”时,触发了“project/1”,我得到了一个错误。如何避免它 @Controller('project') export class ProjectController { @Get() async getProjects(@Res() res): Promise<ProjectDto[]> { return
@Controller('project')
export class ProjectController {
@Get()
async getProjects(@Res() res): Promise<ProjectDto[]> {
return await this.projectService.getProjects(0, 0).then(projects => res.json(projects));
}
@Get(':id')
async getProject(@Param('id', new ParseIntPipe()) id, @Res() res): Promise<ProjectDto> {
return await this.projectService.getProjects(id).then(project => res.json(project[0]));
}
@Get('/authors')
async getAuthors(@Res() res): Promise<AuthorDto[]> {
return await this.projectService.getAuthors().then(authors => res.json(authors));
}
}
@控制器(“项目”)
导出类ProjectController{
@得到()
异步getProjects(@Res()Res):承诺{
return等待this.projectService.getProjects(0,0)。然后(projects=>res.json(projects));
}
@获取(':id')
异步getProject(@Param('id',new ParseIntPipe())id,@Res()Res):承诺{
return等待this.projectService.getProjects(id).then(project=>res.json(project[0]);
}
@获取(“/authors”)
异步getAuthors(@Res()Res):承诺{
return等待this.projectService.getAuthors()。然后(authors=>res.json(authors));
}
}
在描述路线时,您应该更详细地说明
在您的情况下,Routes无法理解哪个是路由路径,哪个是参数
你应该做:
@Controller('project')
export class ProjectController {
@Get()
async getProjects(@Res() res): Promise<ProjectDto[]> {
return await this.projectService.getProjects(0, 0).then(projects => res.json(projects));
}
@Get('/project/:id')
async getProject(@Param('id', new ParseIntPipe()) id, @Res() res): Promise<ProjectDto> {
return await this.projectService.getProjects(id).then(project => res.json(project[0]));
}
@Get('/authors')
async getAuthors(@Res() res): Promise<AuthorDto[]> {
return await this.projectService.getAuthors().then(authors => res.json(authors));
}
}
@控制器(“项目”)
导出类ProjectController{
@得到()
异步getProjects(@Res()Res):承诺{
return等待this.projectService.getProjects(0,0)。然后(projects=>res.json(projects));
}
@获取('/project/:id')
异步getProject(@Param('id',new ParseIntPipe())id,@Res()Res):承诺{
return等待this.projectService.getProjects(id).then(project=>res.json(project[0]);
}
@获取(“/authors”)
异步getAuthors(@Res()Res):承诺{
return等待this.projectService.getAuthors()。然后(authors=>res.json(authors));
}
}
当您想要获取单个项目时,请使用以下命令
@Get('/nameOfItem/:id')
事实上,在所有express应用程序中,所有路由的定义顺序都很重要
简单地说,这是一种先到先得的服务,匹配的第一条路线就是用来响应您的请求的路线
因此,尽可能先考虑静态参数,然后再考虑动态参数
你必须记住的唯一一件事是
先到先得
:)我找到了另一个答案@alexDuck谢谢你的链接,它实际上比公认的解决方案解释得更好。