Post

Redocly으로 API 문서 만들기

Redocly으로 API 문서 만들기

Redocly이란?

Redocly는 OpenAPI Specification (OAS)을 기반으로 API 문서를 만들어 주는 도구입니다.

Redocly의 장점

Java/Spring Boot 환경에서 springdoc-openapi 같은 라이브러리를 사용하면 Swagger UI를 쉽게 연동할 수 있습니다. 하지만 Redocly는 Swagger UI와 비교했을 때 다음과 같은 뚜렷한 장점을 가집니다.

Redocly의 단점

swagge UI는 API를 직접 테스트 할 수 있지만 Readocly는 테스트를 지원하지 않습니다.

3단 패널 레이아웃(Three-Pane Layout)

Redocly의 가장 큰 특징은 3단 패널 레이아웃(Three-Pane Layout)입니다.

image.png

기존 swagger문서는 단일 패널 레이아웃을 채택하고 있습니다. 이 API endpoint가 증가함에 따라 검색이 어렵고, 하나의 패털에서 보기 때문에 API의 parameter가 증가하면 스크롤을 내려서 봐야하는 불편함이 있습니다.

image.png

이런 단일 패널의 문제점을 Redocly는 3단 패널 레이아웃을 채택함으로써 가독성을 좋게 만들어줍니다.

  • 왼쪽 패널: API 엔드포인트 목록과 검색 기능이 있어 원하는 API를 빠르게 찾을 수 있습니다.
  • 중앙 패널: 선택한 API의 상세 설명, 파라미터, 인증 방법 등을 자세히 보여줍니다.
  • 오른쪽 패널: 요청 및 응답 예시 코드를 언어별(cURL, Java, Python 등)로 즉시 보여주어 개발자가 API를 사용하는 데 필요한 정보를 한눈에 파악할 수 있습니다.

이 레이아웃 덕분에 사용자는 화면을 계속 스크롤할 필요 없이, 필요한 모든 정보를 한 화면에서 유기적으로 확인할 수 있어 API 탐색 경험이 매우 뛰어납니다.

커스터마이징

Swagger UI는 기본적인 UI 커스터마이징에 한계가 있는 반면, Redocly는 redocly.yaml 설정 파일을 통해 문서의 거의 모든 시각적 요소를 제어할 수 있습니다. 회사 로고를 추가하거나, 브랜드 색상 테마를 적용하고, 폰트를 변경하는 등 세밀한 조정이 가능하여 타 회사와 소통할 때 기업의 아이덴티티를 담은 전문적인 문서를 만들 수 있습니다.

API 문서 품질 관리 (Linting)

코딩 스타일을 검사하는 ESLint나 Checkstyle처럼, Redocly는 API 명세 파일 자체의 품질을 검사하는 Linter 기능을 내장하고 있습니다. 이를 통해 팀 전체가 일관된 스타일과 품질의 API 문서를 작성하도록 할 수 있습니다.

사용법

Redocly은 다양한 방법으로 설치하고 사용 가능합니다.

1. Redocly CLI

1
2
3
4
5
6
7
8
# Redocly CLI 전역 설치
npm install -g @redocly/cli

## 로컬에서 미리보기
redocly preview-docs openapi.yaml

## HTML 파일로 빌드
redocly build-docs openapi.yaml -o index.html

2. npx를 이용한 빌드

1
2
# CLI를 설치하지 않고, openapi.yaml 파일을 빌드하여 index.html 생성
npx @redocly/cli build-docs openapi.yaml -o index.html

3. 웹 페이지에 직접 임베드하기 (CDN 방식)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE html>
<html>
  <head>
    <title>My API Docs</title>
    <!-- 필수 메타 태그 -->
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
  </head>
  <body>
    <!-- spec-url에 공개적으로 접근 가능한 OpenAPI 명세 파일 URL을 지정합니다. -->
    <redoc spec-url="http://petstore.swagger.io/v2/swagger.json"></redoc>
    <!-- Redoc 스크립트를 불러옵니다. -->
    <script src="https://cdn.redoc.ly/redoc/latest/bundles/redoc.standalone.js"></script>
  </body>
</html>

custom하기

redocly.yaml 설정 파일을 이용한 커스터마이징

redocly.yaml 설정 파일을 이용한 커스터마이징이 가능합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
extends:
  - recommended

apis:
  core@v2:
    root: ./openapi/openapi.yaml
    rules:
      no-ambiguous-paths: error
  external@v1:
    root: ./openapi/external.yaml
    openapi:
      hideLogo: true

openapi:
  schemaExpansionLevel: 2
  generateCodeSamples:
    languages:
      - lang: curl
      - lang: Python

여러 OpenAPI 파일을 하나로 합치기

MSA 환경에서는 각 서비스별로 OpenAPI 파일을 관리하는 경우가 많습니다. Redocly는 여러 파일을 논리적으로 합쳐서 하나의 문서처럼 보여주는 강력한 기능을 제공합니다.

openapi.yaml 파일 내에서 $ref 키워드를 사용하여 다른 파일의 내용을 참조할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
# openapi.yaml
openapi: 3.0.3
info:
  title: Unified API Documentation
  version: 1.0.0
paths:
  /users/{userId}:
    $ref: './users-api.yaml#/paths/~1users~1{userId}' # users-api.yaml 파일 참조
  /products/{productId}:
    $ref: './products-api.yaml#/paths/~1products~1{productId}' # products-api.yaml 파일 참조

redocly build-docs 명령어를 실행하면 Redocly가 참조된 파일들을 모두 읽어와 하나의 완성된 HTML 파일로 만들 수 있습니다.

마치며

API를 직접 테스트하는 기능이 꼭 필요하다면 Swagger UI가 좋은 선택일 수 있지만, 검색도 되고, html로 공유하고 싶다면 Redocly도 좋은 선택지일 수 있습니다.

[출처]

  • https://redocly.com/docs/cli/configuration
  • https://github.com/Redocly/museum-openapi-example
This post is licensed under CC BY 4.0 by the author.