/api/v1/user
/api/v2/user
와 같은 형태의 엔드포인트를 구현하고 싶다.
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { VersioningType } from '@nestjs/common';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.setGlobalPrefix('/api');
app.enableVersioning({
defaultVersion: '1',
type: VersioningType.URI,
prefix: 'v',
});
await app.listen(3000);
}
bootstrap();
import { Controller, Get, Version } from '@nestjs/common';
@Controller('user')
export class UserController {
@Get()
// @Version('1') // enableVersioning의 기본값이 1이기 때문에 생략가능.
getVersion1(): string {
return 'user';
}
@Version('2')
@Get()
getVersion2(): string {
return 'user2';
}
}
setGlobalPrefix, enableVersioning, @Version을 사용하면
굳이 모듈이나 컨트롤러를 따로 분리하지 않아도 손쉽게 구현이 가능했다.