nestjs - routes versioning

00_8_3·2023년 5월 31일
0

nestjs

목록 보기
2/3

버저닝

/api/v1/user

/api/v2/user

와 같은 형태의 엔드포인트를 구현하고 싶다.

main.ts

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();

user.controller.ts

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을 사용하면
굳이 모듈이나 컨트롤러를 따로 분리하지 않아도 손쉽게 구현이 가능했다.

참고

0개의 댓글