OpenAPI 와 Swagger/redoc 란


OpenAPI Spec

OpenAPI Specification (OAS)RESTful API 를 기술하는 표준으로 서비스에서 제공하는 API 의 기능과 End Point 를 개발자나 시스템이 자동으로 발견하고 처리하는데 필요한 정보를 제공합니다.


OAS 는 json 이나 yml 형식으로 기술해야 하며 OAS 파일을 읽어서 디플로이 해주는 도구(Ex: swagger-ui)를 사용하면 아래와 같이 브라우저에서 편리하게 API 문서를 볼 수 있습니다.


OAS 는 예전에는 Swagger spec 으로 불렸으며 3.0 부터 OpenAPI 3.0 Specification 라는 이름으로 표준화되었습니다.


Swagger 란?


Swagger 는 OpenAPI Spec 에 맞게 디자인하고 문서화하고 빌드하기 위한 도구들의 모음으로 다음과 같은 구성 요소로 이루어져 있습니다.

  • Swagger Editor – 브라우저 기반의 편집기로 OpenAPI spec 을 쉽게 작성할 수 있도록 도와줍니다.
  • Swagger UI – OpenAPI spec 문서를 디플로이하고 브라우저에서 예쁘게 표시할 수 있도록 해줍니다. swagger-ui 대신 아래에서 설명할 redoc 을 사용해도 됩니다.
  • Swagger Codegen – OpenAPI spec 에 맞게 Server 나 Client 의 stub code 를 생성해 줍니다. 개발자는 생성된 코드에 비즈니스 로직에 집중해서 구현하면 됩니다.

Swagger UI 설치

OpenAPI spec 을 웹에서 제공하려면 swagger-ui 를 설치하고  제공하려면 의존성이 많아서 도커로 설치해서 관리하는 게 편리합니다.

docker pull swaggerapi/swagger-ui


SWAGGER_JSON 변수에 작성한 OpenAPI spec 파일의 이름을 지정하고 이 파일이 있는 볼륨을 마운트해줍니다.


예로 /var/www/swagger-proj/my-openapi.yml 이 Host 에 있을 경우 이를 volume 으로 매핑해 주면 됩니다.

docker run -p 8080:8080 -e SWAGGER_JSON=/mnt/my-openapi.yml -v /var/www/swagger-proj/:/mnt swaggerapi/swagger-ui


Redoc

redoc 은 OpenAPI Spec 파일을 읽어서 디플로이해주는 도구로 Swagger-UI 와 비슷한 역할을 수행합니다.

설치와 사용이 아주 간편한 장점이 있지만 swagger-ui 랑 달리 브라우저에서 API TEST 기능을 해볼수는 없는 단점이 있습니다.


redoc은 local에서 작성한 API 가 제대로 문서화되었는지 빠르게 확인할 때 테스트할 때 유용합니다.


redoc 설치는 다음 명령을 실행하면 됩니다.

npm -i g redoc-cli


OpenAPI Spec 을 myopenapi.yml 이라는 이름으로 했을 때 다음 명령으로 하나의 파일로 번들링할 수 있습니다.

redoc-cli bundle -o public/myopenapi.html myopenapi.yml

이제 웹 서버를 통해서 번들링한 myopenapi.html 을 서비스하면 됩니다.


로컬에서 사용중이라면 번들링해서 웹 서버로 서빙하지 말고 redoc-cli 를 사용하면 됩니다.

redoc-cli serve  myopenapi.yml


같이 보기

Ref