0

我正在使用 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 中未更改的方法。

4

0 回答 0