我正在使用 Nestjs v8.1.1,并尝试设置 api 版本控制。我的目标是在新的 api 版本中仅将那些已更改的方法添加到控制器中,而无需复制其他未更改的方法。例子:
api v1 团队控制器
@Controller('teams')
export class TeamsController {
@Get()
findAll() {
return this.teamsService.findAll();
}
@Get(':id')
findOne(@Param('id') id: string) {
return this.teamsService.findOne(id);
}
}
在 api v2 中,将一个新方法 findAllV2 添加到 TeamsController
@Controller('teams')
export class TeamsController {
@Get()
findAll() {
return this.teamsService.findAll();
}
@Get(':id')
findOne(@Param('id') id: string) {
return this.teamsService.findOne(id);
}
@Version('2')
@Get()
findAllV2() {
return this.teamsServiceV2.findAll();
}
}
到目前为止,一切都很好。在 main.ts 我将 v1 设置为默认版本:
app.enableVersioning({
type: VersioningType.URI,
defaultVersion: '1'
});
结果:
http://localhost:8080/api/v1/teams -> 工作正常
http://localhost:8080/api/v1/teams/1 -> 工作正常
http://localhost:8080/api/v2/teams -> 工作正常
http://localhost:8080/api/v2/teams/1 -> 不起作用(找不到 url 404)我想在这里得到与 /api/v1/teams/1 相同的结果,而无需复制 findOne()在 v2 中未更改的方法。