개요
FastAPI 공식 문서를 참고하다 보면 OpenAPI라는 단어를 종종 보게 된다. 처음 FastAPI를 다룰 때에는 그런 게 있나 보다 하고 넘어갔는데, 슬슬 어떤 개념인지 짚고 넘어가야 할 것 같아 정리한다.
OpenAPI vs Open API
구글 검색으로 OpenAPI를 찾아보면 전혀 다른 개념을 설명하는 여러 글을 발견할 수 있는데, 각각의 정의는 다음과 같다.
Open API
Open Application Programming Interface, Open API, 공개 API .
개발자라면 누구나 사용할 수 있도록 공개된 API를 말하며, 개발자에게 애플리케이션이나 웹 서비스의 프로그래밍적인 권한을 제공한다. 다시 말해, 어떤 웹 사이트에서 자신이 가진 기능을 이용할 수 있도록 공개한 프로그래밍 인터페이스라고 할 수 있다. 대표적으로 네이버 지도, 구글 지도 등이 해당된다.
반대말은 Private API이다.
OpenAPI
웹 서비스를 설명하고, 생성하고 소비 및 시각화하기 위한 기계 판독 가능 인터페이스 정의 언어 명세. 이전에는 Swagger 명세로 알려졌었고, Swagger를 지원하기 위해 개발되었으나 별도의 프로젝트가 되었다.
즉, Open API는 API의 유형 중 하나라면 OpenAPI는 REST API에 대한 API 설명 형식에 해당된다.
Swagger
그렇다면 Swagger와 OpenAPI는 어떤 차이가 있을까?
Swagger
API 개발자를 위한 도구를 모은 프로젝트로, OpenAPI의 기반이기도 하다.
기존에 Swagger는 REST API에 대한 사양을 의미했다면, 지금의 Swagger는 OpenAPI를 implement 하기 위한 도구라고 할 수 있다. 다시 말해, API가 가진 사양을 정의할 수 있는 여러 도구 중 하나라고 할 수 있다.
예시로, OpenAPI 사양에 맞게 기술한 문서를 swagger-ui로 띄우면 브라우저에서 편리하게 API 문서를 확인할 수 있다.
참고 문서
https://ko.wikipedia.org/wiki/%EC%98%A4%ED%94%88_API