데브허브 | DEVHUB | Nest.js - 14강: Swagger란 무엇인가?Nest.js - 14강: Swagger란 무엇인가?
- Swagger는 API 설계, 문서화, 테스트를 돕는 도구로, 특히 Open API Specification(OAS) 표준을 사용하여 RESTful API를 정의하고 상호작용 가능한 웹 기반 문서를 자동 생성합니다. 📝
- OAS는 JSON 또는 YAML과 같은 언어에 구애받지 않는 형식으로 API 구조를 설명하는 규격으로, 다양한 프로그래밍 언어를 사용하는 개발자들이 API를 통일된 방식으로 이해하고 활용할 수 있게 합니다. 🌐
- Nest.js에서 Swagger를 사용하려면
@nestjs/swagger 모듈을 설치하고 main.ts 파일에서 설정 및 초기화해야 합니다. 🛠️
ApiTags, ApiOperation, ApiResponse, ApiProperty 등 다양한 데코레이터를 사용하여 컨트롤러 및 라우트 메서드에 대한 설명을 추가하고 API 그룹, 동작, 응답 데이터 구조 등을 문서화할 수 있습니다. 🏷️
- Swagger는 코드에 추가된 메타데이터를 읽어 애플리케이션 실행 시 자동으로 Swagger JSON/YAML 파일을 생성하고, 이를 Swagger UI를 통해 시각적으로 보여줍니다. 🖥️
- 주요 장점으로는 코드 변경 시 문서 자동 업데이트로 수동 문서화 작업이 사라지고, Swagger UI를 통해 브라우저에서 직접 API 요청 및 테스트가 가능하며, 프런트엔드-백엔드 간 커뮤니케이션 오류를 줄여준다는 점이 있습니다. 🚀
- 단점으로는 문서화를 위한 데코레이터 추가로 코드가 장황해지고 가독성이 떨어질 수 있으며, DTO, 파라미터, 응답 등을 꼼꼼하게 작성하는 초기 노력이 필요하고, 운영 환경에서 문서 페이지 노출 시 보안 이슈가 발생할 수 있어 주의가 필요합니다. ⚠️