LionTown Project Swagger

Crmal·2022년 4월 25일
0

LionTown

목록 보기
4/4
post-thumbnail

이전 프로젝트에서는 Notion을 이용하여 API문서를 수기로 작성하였습니다.
이전 플젝은 라우터의 개수도 많지않았으며 간단한 내용이였기에 별 문제가 없었습니다. 하지만 이번 플젝은 이전보다 라우터의 개수도 많아지고 내용도 좀 더 많아졌고 지속적인 개발을 하고자하여서 Swagger를 채택했습니다.


Swagger란?

Swagger(스웨거)는 개발자가 REST API 서비스를 설계, 빌드, 문서화할 수 있도록 하는 프로젝트이다.

다음과 같이 라우터를 작성할경우 설명과 결과를 볼 수 있습니다.

Swagger 사용방법

@nestjs/swagger swagger-ui-express를 설치해줍니다.

yarn add @nestjs/swagger swagger-ui-express

main.ts에서 다음과 같이 코드를 넣어줍니다.

//main.ts
import { NestFactory } from '@nestjs/core';
import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger';

import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);

  const config = new DocumentBuilder()
    .setTitle('lionking API DOCS')
    .setDescription('lionTown API문서')
    .setVersion('0.0.1')
    .addBearerAuth({ type: 'http', scheme: 'bearer', bearerFormat: 'Token' }, 'access-token')
    .build();

  const document = SwaggerModule.createDocument(app, config);
  SwaggerModule.setup('api', app, document);

  await app.listen(3000);
}
bootstrap();

이렇게 되면 localhost:3000/api로 Swagger가 열리게됩니다.
이제 Swagger의 라우터 설명 및 부가적인 코드를 작성하기위해서는

app.controller.ts 로 이동하여 작성해줍니다

//app.controller.ts
import { Controller, Get } from '@nestjs/common';
import { ApiOperation, ApiTags } from '@nestjs/swagger';

import { AppService } from './app.service';

@Controller()
@ApiTags('test API')
export class AppController {
  constructor(private readonly appService: AppService) {}

  @Get()
  @ApiOperation({ summary: 'test API', description: 'test 코드입니다.' })
  getHello(): string {
    return this.appService.getHello();
  }
}

@ApiTags('api태그설정')
@ApiOperation({ summary: '제목설정' description:'라우터 설명' }입니다.

이외에 다른 데코레이터(@)를 사용하기 위해서는 링크를 참조하세요

0개의 댓글