
"마감까지 이틀밖에 남지 않았는데, 고객이 API 명세 변경을 요청했어요..."
저는 금융 프로젝트의 마지막 단계에서 이런 상황에 직면했습니다. 더 나쁜 것은, 출장 중 호텔에서 불안정한 인터넷 연결로 작업해야 했다는 점이었죠. 온라인 API 문서 도구를 사용할 수 없어 막막했지만, 로컬에서 Swagger UI를 사용하는 방법이 떠올랐습니다.
결과적으로, 로컬 Swagger UI 사용은 다음 3가지 문제를 즉시 해결해 주었습니다:
이 글에서는 제 실제 경험을 바탕으로 로컬 Swagger UI를 활용하는 구체적인 방법과 개발 효율성을 향상시키는 방법을 설명하겠습니다. API 개발에 참여하는 엔지니어분들께 도움이 되길 바랍니다.
"복잡할 것 같다..."라고 생각하실 수 있지만, 실제로 로컬 Swagger UI 환경 설정은 놀라울 정도로 간단합니다. 다음 단계를 따라하면 약 5분 만에 설정을 완료할 수 있습니다.
가장 간단한 방법은 GitHub에서 저장소를 클론하는 것입니다:
git clone https://github.com/swagger-api/swagger-ui.git
Node.js가 설치되어 있다면, http-server를 전역으로 설치합니다:
npm install -g http-server
Swagger UI의 배포 디렉토리로 이동하여 서버를 시작합니다:
cd swagger-ui/dist
http-server --cors
--cors 옵션은 Cross-Origin Resource Sharing을 활성화하기 위해 사용됩니다.
브라우저에서 http://localhost:8080에 접속하여 Swagger UI 인터페이스를 확인합니다.
다음은 최소한의 Swagger 명세 파일 예시입니다(swagger.yaml로 저장):
openapi: 3.0.0
info:
title: 샘플 API
version: 1.0.0
paths:
/hello:
get:
summary: 인사말을 반환하는 API
responses:
'200':
description: 성공적인 응답
content:
application/json:
schema:
type: object
properties:
message:
type: string

Swagger UI 화면 상단의 입력 상자에 로컬 명세 파일의 URL(예: http://localhost:8080/swagger.yaml)을 입력한 다음 "Explore" 버튼을 클릭합니다.
위 단계를 통해 로컬 환경에서 Swagger UI로 API 문서를 생성하고 볼 수 있습니다. 이 방법을 사용하면 인터넷 연결이 없거나 엄격한 보안 요구사항이 있는 환경에서도 API 문서를 작성하고 편집할 수 있습니다.
앞서 언급했듯이, 로컬 Swagger UI의 가치를 처음 깨달은 것은 출장 중이었습니다. 고객과의 회의에서 명세 변경을 결정했고, 그 자리에서 바로 API 문서를 업데이트해야 했습니다.
호텔 Wi-Fi가 불안정했지만, 로컬 Swagger UI 덕분에 다음과 같은 작업이 가능했습니다:
과정이 매끄럽게 진행되었고, "와, 이거 정말 편리하네!"라는 놀라움을 아직도 기억합니다.
또 다른 경우로, 외부 서비스 사용을 제한하는 보안 정책이 있는 금융 프로젝트에서 일한 적이 있습니다. 온라인 도구로 API 문서를 관리할 수 없었지만, 로컬 Swagger UI를 사용함으로써 다음과 같은 작업이 가능했습니다:
기본으로 돌아가서 Swagger UI에 대해 간략히 설명하겠습니다.
Swagger UI는 OpenAPI Specification(이전의 Swagger Specification)으로 작성된 API 정의를 시각적으로 표시하고 검증하는 도구입니다. JavaScript로 개발된 오픈 소스 프로젝트로 다음과 같은 특징이 있습니다:
Swagger UI의 가장 큰 매력은 "API 문서를 단순한 텍스트가 아닌 대화형 경험으로 제공하는 능력"입니다.
로컬 Swagger UI 사용의 이점을 더 자세히 살펴보겠습니다.
로컬 Swagger UI 환경을 최대한 활용하기 위한 몇 가지 고급 기술을 소개합니다.
Swagger UI의 디자인을 프로젝트에 맞게 커스터마이징할 수 있습니다. swagger-ui/dist/swagger-ui.css를 편집하거나 커스텀 CSS를 추가하여 브랜드 색상에 맞는 테마를 만들 수 있습니다.
개발, 테스트, 프로덕션과 같은 여러 환경의 API 정의 간에 전환하려면 다음과 같은 HTML 파일을 만들 수 있습니다:
<!DOCTYPE html>
<html>
<head>
<title>API 문서</title>
<link rel="stylesheet" type="text/css" href="./swagger-ui.css">
</head>
<body>
<div id="swagger-ui"></div>
<script src="./swagger-ui-bundle.js"></script>
<script>
window.onload = function() {
const ui = SwaggerUIBundle({
urls: [
{url: "specs/dev.yaml", name: "개발 환경"},
{url: "specs/test.yaml", name: "테스트 환경"},
{url: "specs/prod.yaml", name: "프로덕션 환경"}
],
dom_id: '#swagger-ui',
deepLinking: true,
presets: [SwaggerUIBundle.presets.apis],
});
window.ui = ui;
};
</script>
</body>
</html>
Swagger UI를 모의 서버와 결합하면 실제 백엔드 없이도 API 작동을 테스트할 수 있습니다. 예를 들어, swagger-ui를 json-server와 결합할 수 있습니다:
npm install -g json-server
json-server --watch mock-data.json --routes routes.json --port 3000
그런 다음 Swagger UI 정의 파일의 servers 섹션을 다음과 같이 구성합니다:
servers:
- url: http://localhost:3000
description: 모의 서버
Swagger UI를 최대한 활용하려면 품질 높은 API 설계가 필수적입니다. 효과적인 API 설계를 위한 모범 사례를 살펴보겠습니다.
/users, /products)이러한 모범 사례를 API 설계에 적용하면 Swagger UI의 가치를 최대한 활용할 수 있습니다.
Swagger UI는 훌륭한 도구이지만, 더 통합된 API 개발 환경을 찾고 있다면 Apidog를 고려해볼 만합니다.
Apidog는 API 설계, 문서 생성, 테스트, 모의 서버 기능을 단일 플랫폼에서 제공하는 도구입니다. Swagger/OpenAPI 명세 파일을 직접 가져올 수 있으며, 복잡한 설정 없이 바로 사용할 수 있습니다.

저는 개인적으로 작은 프로젝트에는 Swagger UI를, 대규모 팀 개발 프로젝트에는 Apidog를 사용합니다. 둘 다 훌륭한 도구이므로 프로젝트 규모와 요구사항에 따라 선택하시면 됩니다.
이 글에서는 실제 예시와 함께 로컬 환경에서 Swagger UI를 활용하는 방법을 설명했습니다.
주요 포인트 요약:
로컬 Swagger UI 사용은 API 개발의 효율성과 품질을 크게 향상시킬 수 있습니다. 지금 바로 시도해보세요!
"이런 방식으로도 활용할 수 있겠네!"라는 아이디어가 있으시면 댓글로 공유해주세요. API 문서화 문제를 함께 해결해 나가요!