
이 글에서는, 제 실제 경험을 바탕으로, Swagger 문서를 PDF로 변환하는 방법을 소개합니다. 오프라인 환경에서도, 보안이 엄격한 현장에서도 사용할 수 있는, API 개발자 필수 테크닉입니다!
Swagger UI는 훌륭한 도구이지만, 항상 온라인에서 사용할 수 있는 것은 아닙니다. 저처럼 다음과 같은 상황에 직면한 적이 있으신가요?
이런 때, Swagger 문서를 PDF로 변환해 두면 정말 도움이 됩니다!
제가 실제로 시도한 방법 3가지를 소개합니다. 각각 장단점이 있으니, 상황에 맞게 사용하세요.

가장 간편한 방법은 온라인 도구를 사용하는 것입니다. Swagger to PDF라는 사이트가 매우 편리했습니다.
사용법:
제 경험: 이 도구를 사용했을 때, "이렇게 간단해도 되나?"라고 놀랐습니다. 몇 번의 클릭으로 아름다운 PDF가 완성되었거든요. 다만, 사내 Swagger 정의를 공개 사이트에 업로드하는 것은 보안 정책상 문제가 있을 수 있으니 주의가 필요합니다.

오프라인에서도 사용할 수 있는 방법으로, Swagger Editor를 사용한 변환 방법도 있습니다.
절차:
제 경험: 이 방법은 조금 번거롭지만, 보안 요구사항이 엄격한 프로젝트에서도 사용할 수 있었습니다. 특히, 로컬에 Swagger Editor를 설치해 두면, 완전히 오프라인에서 작업할 수 있어 좋습니다.
# 로컬에 Swagger Editor 설치하는 방법
git clone https://github.com/swagger-api/swagger-editor.git
cd swagger-editor
npm install
npm run build
npm start
가장 간단한 방법은 Swagger UI를 표시한 브라우저에서 직접 PDF로 인쇄하는 것입니다.
절차:
제 경험: 급할 때는 이 방법이 가장 빠릅니다. 다만, Swagger UI의 표시가 깨질 수도 있으니, 중요한 회의 전에는 반드시 출력 결과를 확인하는 것이 좋습니다.
사실 최근, 우리 팀은 Swagger UI에서 Apidog으로 이전했습니다. Apidog은 API 설계, 테스트, 문서 작성을 하나의 플랫폼에서 완결할 수 있는 도구입니다.

Apidog의 훌륭한 점은 API 문서를 다양한 포맷으로 내보낼 수 있다는 것입니다. 인터랙티브 HTML, 정적 HTML, Markdown, Swagger, Postman 등, 상황에 맞는 최적의 형식을 선택할 수 있습니다.
특히 마음에 드는 것은, 팀원 모두가 실시간으로 같은 문서를 편집하고 확인할 수 있다는 점입니다. "최신 버전은 어떤 것인가?"라는 혼란이 사라졌습니다.
주의 사항: Apidog은 현재, PDF나 Word 형식으로 직접 내보내기를 지원하지 않지만, 먼저 Markdown 형식으로 내보낸 후 외부 도구를 사용하여 변환할 수 있습니다. 예를 들어, Typora, MarkText, 또는 몇몇 VSCode 플러그인을 사용하면, Markdown을 PDF, Word, Epub 등의 형식으로 변환할 수 있습니다.
이것은 제가 실제로 하고 있는 방법입니다. Apidog에서 내보낸 마크다운 파일을 Typora로 열어, PDF로 변환하고 있습니다. 이 방법이라면, 스타일이나 포맷도 커스터마이즈할 수 있어 편리합니다.
Swagger 문서를 PDF로 변환하는 방법을 소개했지만, 어떤 방법을 선택하든, 중요한 것은 "언제 어디서나 API 명세를 공유할 수 있는 상태를 만들어 두는 것"입니다.
제 경험에 따르면, API 개발에 있어서 문서화와 공유는 코딩보다 더 중요한 경우가 있습니다. 특히 여러 팀이 관여하는 대규모 프로젝트에서는, 정확한 API 명세서가 프로젝트 성공의 열쇠를 쥐고 있습니다.
앞으로는, Apidog과 같은 올인원 도구의 보급으로, API 문서 관리가 더욱 효율화될 것입니다. 특히 한국의 개발 현장에서는, 상세한 문서가 중시되는 경향이 있으므로, 이러한 도구의 활용은 큰 이점이 될 것이라고 생각합니다.
여러분도, 이번에 소개한 방법을 시도해 보세요. "그때 준비해 두어서 다행이었다"고 생각하는 날이 반드시 올 것입니다!
질문이나 다른 편리한 방법이 있으면, 꼭 댓글란에서 알려주세요. API 개발의 효율화에 대해, 함께 생각해 봅시다!