웹/Nest

[Nest] Nest에서 swagger와 postman 연동하기

wonin 2023. 7. 3. 13:02

아무래도 swagger를 메인으로 서버 개발을 하다 보면 클릭할 것이 많아져 편한 툴인 postman으로 하고싶은 마음이 듭니다.

postman은 json 객체로된 정보들을 가져다가 collection을 만들 수 있습니다.

nest에서 swagger를 연동하면 json형태의 swagger을 가져올 수 있습니다.

swagger의 json파일을 얻으려면 nest 서버를 실행하고 api-json에 접속하면 됩니다.

 

1. nest에서 swagger 작성하기

공식문서에 친절하게 swagger의 적용 방법이 나와있습니다.

$ npm install --save @nestjs/swagger

@nestjs/swagger을 다운받고요.

main.ts 파일에 swagger 설정을 하면 됩니다.

 

main.ts

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

  app.useGlobalPipes(new ValidationPipe()); // class validator 처리
  app.useGlobalFilters(new HttpExceptionFilter()); // Http 에러 처리
  app.useGlobalFilters(new TypeOrmExceptionFilter()); // Typeorm 에러 처리
  app.useGlobalInterceptors(new ResponseInterceptor()); // 반환값 객체화 처리
  const port = process.env.PORT || 3000;
  console.log(`listening on port ${port}`);

  // swagger 생성
  const config = new DocumentBuilder()
    .setTitle('test')
    .setDescription('test api 문서')
    .setVersion('1.0.0')
    .build();

  const document = SwaggerModule.createDocument(app, config);
  SwaggerModule.setup('api', app, document); // (경로, 프로그램 인스턴스, 문서객체)

  // cors 설정
  app.enableCors();
  await app.listen(port);

  // 핫 리로딩 적용
  if (module.hot) {
    module.hot.accept();
    module.hot.dispose(() => app.close());
  }
}
bootstrap();

nestjs에서 api 문서를 상세하게 쓰는 법은 공식문서에 나와있습니다. ex) @ApiProperty({}), @ApiBody.. 등

그다음 서버를 실행시켜 swagger 문서를 확인합니다.

 

기존 swagger 문서   /  swagger의 json 문서

우리가 원하는 json 파일입니다. postman에게 json 문서를 인식해줘야 합니다.

 

 

2. Postman에서 import 하기

🟦 postman의 좌측 상단의 import 버튼을 눌러줍니다.

 

 

 

🟦 url 넣는창에 localhost:3000/api-json을 넣어줍니다.

 

 

 

🟦 Postman Collection을 선택하면 기존의 postman collection에 넣습니다.

🟦 OpenAPI 3.0 with a Postman Collection에 넣으면 새로운 postman collection을 생성합니다.

 

 

 

🟦 새로운 collection을 펼처서 swagger에 적었던 api를 postman에서 그대로 사용할 수 있습니다.

728x90