Node.js · 2026-02-12

API 스펙 자동화(OpenAPI/Swagger)와 Node.js 연동

OpenAPI와 Swagger를 활용해 Node.js 프로젝트에서 API 스펙을 자동 생성하고 Swagger UI로 시각화하는 설정

작성일 : 2026-02-12 ㆍ 작성자 : 관리자
post
목차

소개

API 스펙 자동화는 개발 속도를 높이고 클라이언트와의 소통을 명확하게 만든다. Node.js 기반 서버에 OpenAPI(구 Swagger)를 통합하면 코드와 스펙을 일관되게 유지할 수 있다. 이 글은 처음 접하는 개발자도 이해하기 쉽도록 실무에서 자주 쓰이는 도구와 설정 흐름을 정리한다.

핵심 개념

OpenAPI와 Swagger의 차이

OpenAPI는 API 규격 표준이다. Swagger는 그 규격을 이용해 문서화와 UI를 제공하는 도구 모음이다. 흔히 Swagger UI와 swagger-jsdoc 같은 라이브러리를 함께 사용해 자동화된 스펙을 생성하고 브라우저에서 확인한다.

왜 자동화가 필요한가

  • 스펙과 코드 불일치로 인한 버그 감소
  • 클라이언트와 서버 간 계약을 명확히 유지
  • 테스트와 배포 파이프라인에 통합 가능

필수 도구

  • express: 서버 프레임워크
  • swagger-jsdoc: JSDoc 주석으로부터 OpenAPI 스펙 생성
  • swagger-ui-express: 생성된 스펙을 브라우저에서 제공

설치

프로젝트 디렉터리에서 필요한 패키지를 설치한다. 예제는 npm 기준이다.

npm install express swagger-jsdoc swagger-ui-express

구현 흐름

핵심 단계는 다음과 같다.

  • swagger-jsdoc 설정으로 OpenAPI 정의 구성
  • JSDoc 주석으로 각 라우트에 스펙 추가
  • swagger-ui-express로 /api-docs 같은 경로에 UI 제공

예제 코드

아래는 최소한의 Express 연동 예제다. 실제 프로젝트에서는 routes 폴더를 분리해 관리한다.

const express = require('express');
const swaggerJsdoc = require('swagger-jsdoc');
const swaggerUi = require('swagger-ui-express');

const app = express();

const options = {
  definition: {
    openapi: '3.0.0',
    info: {
      title: 'Example API',
      version: '1.0.0',
      description: 'Sample API for demo'
    }
  },
  apis: ['./routes/*.js', './server.js']
};

const specs = swaggerJsdoc(options);

app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(specs));

app.get('/health', (req, res) => {
  res.json({ status: 'ok' });
});

app.listen(3000, () => console.log('Server started on 3000'));

라우트에 스펙 주석 추가

swagger-jsdoc는 JSDoc 스타일 주석을 읽어 OpenAPI 스펙으로 변환한다. 예시는 routes/users.js 파일의 주석이다.

/**
 * @openapi
 * /users:
 *   get:
 *     summary: 사용자 목록 조회
 *     responses:
 *       '200':
 *         description: 성공
 */
app.get('/users', (req, res) => {
  res.json([{ id: 1, name: '홍길동' }]);
});

Swagger UI 커스터마이징

swagger-ui-express는 기본 설정 외에 테마나 문서 기본값을 바꿀 수 있다. setup 함수에 추가 옵션을 전달해 로고나 기능을 조정할 수 있다. 또한 생산 환경에서는 인증이 필요한 엔드포인트로 UI 접근을 제한하는 것이 일반적이다.

CI/CD와 통합

스펙을 자동 생성하면 배포 파이프라인에서 스펙 유효성 검사, 변경 로그 생성, 클라이언트 SDK 자동 생성 같은 작업을 추가할 수 있다. 예를 들어 테스트 단계에서 swagger-cli 같은 도구로 OpenAPI 파일 유효성을 검사하면 스펙 오류를 조기에 발견할 수 있다.

권장 구조

  • routes/ : 라우트 파일과 JSDoc 주석 분리
  • docs/ : 빌드된 OpenAPI JSON 보관(선택사항)
  • config/swagger.js : swagger-jsdoc 옵션 중앙화

자주 발생하는 문제와 해결

apis 경로가 잘못된 경우

swagger-jsdoc의 apis 배열에 지정한 경로가 실제 파일 위치와 일치하는지 확인한다. 상대 경로 오류가 가장 흔하다.

스펙이 누락되는 경우

JSDoc 주석 형식이 OpenAPI 규격과 맞지 않으면 누락이 발생한다. 들여쓰기와 키 이름을 정확히 맞춰야 한다.

마무리

Node Swagger 설정 Node.js 환경에서 OpenAPI 자동 문서화 Node 흐름을 이해하면 팀 협업과 유지보수가 쉬워진다. Swagger UI Express 설정으로 시각화하면 API 소비자가 빠르게 파악할 수 있다. 처음에는 설정이 번거롭게 느껴질 수 있지만, 일단 적용하면 반복 작업을 줄이고 신뢰도를 높일 수 있다.

Node Swagger 설정 Node.js OpenAPI 자동 문서화 Node Swagger UI Express 설정 swagger-jsdoc swagger-ui-express express API 스펙 OpenAPI