nest全栈之路-版本控制

454 阅读1分钟

版本控制

在构建 Web API 时,接口版本控制是一个关键的概念,它允许你在 API 的演进过程中进行更改而不破坏旧版本的兼容性。Nest 提供了一些强大的工具和技术,使接口版本控制变得简单和灵活。

v1/user/auth
v2/user/auth

控制器版本

版本可以应用于控制器,为控制器内的所有路由设置版本。

@Controller({
  version: '1',
})
export class CatsControllerV1 {
  @Get('cats')
  findAll() {
    return 'This action returns all cats for version 1';
  }
}

路由版本

版本可以应用于单个路由。该版本将覆盖影响路由的任何其他版本,例如控制器版本。

@Controller()
export class CatsController {
  @Version('1')
  @Get('cats')
  findAllV1() {
    return 'This action returns all cats for version 1';
  }

  @Version('2')
  @Get('cats')
  findAllV2() {
    return 'This action returns all cats for version 2';
  }
}

多个版本

多个版本可以应用于控制器或路由。要使用多个版本,将版本设置为数组。

@Controller({
  version: ['1', '2'],
})

// 或者
@Version: ['1','2']
@Get('cats')

任意版本

某些控制器或路由可能不关心版本,并且无论版本如何都具有相同的功能。为了适应这一点,版本可以设置为VERSION_NEUTRAL符号

import { VERSION_NEUTRAL } from '@nestjs/common';

@Controller({
  version: VERSION_NEUTRAL,
})