[Nest.js][TIL] swagger api ui 적용

Trippy·2023년 12월 8일
0

Nest.js

목록 보기
2/15
post-thumbnail

Nest.jsExpress에 비해서 Swagger와 같은 API문서 작업을 수행할 때 편리한 기능을 제공한다. 몇 가지 Nest.js의 swagger 작업에 대한 장점은 다음과 같다.

1. 데코레이터 사용

Nest.js는 @nestjs/swagger라이브러리를 사용하여 데코레이터를 통해 API문서를 정의할 수 있다. 이는 코드상에서 직접 swagger스펙을 작성하지 않아도 된다는 장점이 있다.

2. Auto-generating 기능

Nest.js는 데코레이터와 주석을 분석하여 자동으로 swagger문서를 생성하는 기능을 제공한다. 개발자가 api엔드포인트를 추가하거나 수정할 때 마다 swagger문서가 자동으로 업데이트 된다.

3. 직관적인 코드 작성

Nest.js의 구조와 데코레이터를 사용하면 API엔드포인트를 정의하는 코드가 직관적이고 가독성이 뛰어나다.
이는 swagger문서를 작성하는데 있어서도 코드와 문서 간의 일관성을 유지할 수 있도록 도와준다.

4. swagger UI적용

Nest.js에서는 swagger UI를 자동으로 생성하여 개발자가 API문서를 시각적으로 확인할 수 있도록 지원한다. 이를 통해 API엔드포인트를 테스트하고 디버깅하는데 용이하다.

5. DTO사용 용이

Nest.js에서는 DTO를 사용하여 입력과 출력의 형식을 명시적으로 정의할 수 있다. 이는 swagger문서를 자동으로 생성할 떄도 도움이 되며, API사용자에게 어떠한 데이터가 필요한지 명확하게 전달할 수 있다.

Nest.js 프로젝트에 스웨거 인스톨

npm i --save @nest/swagger
// main.js
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import cookieParser from 'cookie-parser';
import passport from 'passport';
import session from 'express-session';
import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger';

declare const module: any;

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  const port = process.env.PORT || 3000;
// ----------swagger 추가-----------
  const config = new DocumentBuilder()
    .setTitle('Slack API')
    .setDescription('Slack 개발을 위한 API 문서입니다')
    .setVersion('1.0')
    .addCookieAuth('connect_sid')
    .build();
  const document = SwaggerModule.createDocument(app, config);
  SwaggerModule.setup('api', app, document);
// ----------swagger 추가-----------
  .
  .
  .
    await app.listen(port); <- 보다 위에서 해야됌
   console.log(`listening on port ${port}`);

  if (module.hot) {
    module.hot.accept();
    module.hot.dispose(() => app.close());
  }
}
bootstrap();

결과




API summary, ApiOkResponse

summaryApiOkResponse

결과


ApiParam, ApiQuery

ApiParamApiQuery

결과

profile
감금 당하고 개발만 하고 싶어요

0개의 댓글