Nest.js
는 Express
에 비해서 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();
결과
summary
와 ApiOkResponse
결과
ApiParam
와 ApiQuery
결과