版本控制
在构建 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,
})