Swagger/OpenAPI 명세에서 TypeScript API 클라이언트를 생성해 반복 수작업을 줄인 스타트업의 실전 운영 경험을 다룬다. 명세·generator·템플릿이라는 세 조정 지점을 기준으로, 도입 이유부터 실제로 부딪힌 문제와 커스터마이징, 배포·버전 자동화까지 이어간다.
핵심 포인트- 서버 명세가 바뀔 때마다 낡는 클라이언트 코드를, 이미 공유하는 Swagger 명세에서 SDK를 생성해 대체 — GraphQL·gRPC·tRPC와 달리 기존 REST 스택을 크게 안 바꾸고 도입 가능한 점을 선택 기준으로
- 문서 UI는 관대하나 코드 생성 단계에서 실패하는 불완전한 명세를 CI lint로 강제하고, Unicode 이름 불일치·실행마다 달라지는 모델 순서를 영문 명명·결정적 정렬로 잡아 무의미한 diff 제거, 배열·중첩 객체 쿼리 직렬화는 style·explode 설정으로 서버·generator와 정합
- 로직 없는 Mustache로는 HTTP method 같은 조건식을 못 만들어 'GET만 React Query 생성' 같은 요구는 템플릿만으로 풀기 어려움 — enum을 TS union으로 바꾸고 프리픽스를 제거하되 union edge case가 있는 런타임 검증 옵션은 실제 결과를 보고 비활성화
- 생성물을 내부 라이브러리로 배포해 웹·React Native 앱이 공유하고, Conventional Commits로 semantic version을 자동화해 API 변경 영향 범위를 컴파일 단계에서 노출 — 기존 프로젝트는 모델 생성부터 점진 도입 권장
왜 읽나OpenAPI Generator로 API 클라이언트를 자동화하려는 소규모 팀에게 명세·템플릿·배포에서 실제로 밟는 함정과 커스터마이징 한계를 미리 알려주는 실전편.