본문 바로가기
Dev-Code(Back-End)/Swagger

[Swagger] NestJS에서 Swagger 사용하기

by 김밥맨이야 2023. 2. 17.
반응형

프로젝트를 진행하다보니 Swagger를 사용해야하는 상황이 생겼다.

 

API 정의서를 직접 작성 할 수도 있지만 이번프로젝트에서는 이전 방식보다는 Swagger를 이용하여 편하게 일 해보자는 목적이 생겼다.

 

그래서 한번 써보려고 한다!

 

 

<설치 방법>

여타 다른 모듈들과 마찬가지로 일단 패키지를 설치해야 한다!

npm을 이용하여 간단하게 패키지 설치를 하면 되고 명령어는 아래와같다.

npm install --save @nestjs/swagger swagger-ui-express

 

설치를 모두 마치고 나면 이제 실행이 되게끔 코드를 추가해주는 일만 남았다.

 

<기본 설정>

우선 Swagger의 Setup을 먼저 진행해야 한다.

나는 util 폴더에다가 아예 Swagger관련된 파일을 하나 만들고 그 안에 function을 만들었다.

import { INestApplication } from '@nestjs/common';
import { DocumentBuilder } from '@nestjs/swagger';
import { SwaggerModule } from '@nestjs/swagger/dist';

export function setupSwagger(app: INestApplication): void {
  const options = new DocumentBuilder()
    .setTitle('NestJS 프로젝트 API 문서')
    .setDescription('스웨거를 이용한 API문서 생성')
    .setVersion('1.0.0')
    .build();

  const document = SwaggerModule.createDocument(app, options);
  SwaggerModule.setup('api-docs', app, document);
}

Swagger에 내장된 기능을 이용하여 내가 앞으로 작성할 API문서들의 기본적인 설정을 진행 하였다.

제목, 설명, 버전 등을 설정하고 SwaggerModule.createDocument(app, options) 부분에서 객체를 넘겨서 API문서를 생성할 때 필요한 각종 옵션으로 제공한다.

 

그 후 main에서 위에서 만든 function을 호출하면 끝이다.

  setupSwagger(app);
  await app.listen(port);

나는 app.listen 바로 위에 위치시켰다.

 

참고로 'api-docs' 라는 부분은 접속 주소에서 포트번호 다음으로 입력될 라우터명인것 같다. 

http://localhost:3000/api-docs 처럼 써서 접속하면 API문서 페이지로 이동하게된다.

 

서버를 구동 시키고 http://localhost:3000/api-docs로 접속해보면 위와같은 페이지가 열리게된다!

 

그렇다면 성공한거겠지?... 아직 갈길이 멀어서 이게 성공인지 아닌지 헷갈린다.

 

문서의 틀을 잡았으니 다음에는 세부적으로 문서를 작성하고 실질적으로 알아 볼 수 있는 API정의서 작성법을 알아봐야겠다.

 
반응형

댓글