API 도구 생태계에는 아쉬운 근접 실패가 있었다. OpenAPI는 JSON과 유사한 스키마 객체를 사용했지만, 그것은 완전한 JSON 스키마가 아니었다. 검증기, 코드 생성기, 문서 도구는 미묘한 차이를 익혀야 했고, 그래서 동일한 API 계약이 서로 다른 스택에서 다른 의미를 가질 수 있었다.

우아한 선택은 API 전용 언어를 또 하나 만드는 것이 아니었다. JSON 스키마는 스키마 자체를 JSON 미디어 타입으로 만들고, 어떤 키워드와 동작이 적용되는지 선언하는 어휘와 메타 스키마를 도입했다. 그리하여 OpenAPI 3.1은 이렇게 말할 수 있게 되었다. 유사품이 아니라 JSON 스키마 draft 2020-12를 사용하라고.

그 결과는 다른 표준들 아래의 문법이 됨으로써 승리한 표준이었다. OpenAPI는 3.1 릴리스가 최신 JSON 스키마 draft와 100% 호환된다고 밝혔고, JSON 스키마는 검증, 코드 생성, UI, 문서화를 위한 안정적인 확장 모델을 얻었다.

스키마를 확장 가능한 어휘로 만들었다

스키마가 평범한 JSON으로 남아 있었기에 개발자들은 기존 도구로 그것을 읽고, 비교하고, 생성할 수 있었다.

어휘는 모든 플랫폼이 사설 키워드를 발명하게 하는 대신 확장에 이름과 경계를 부여했다.

OpenAPI의 채택은 JSON 스키마를 API 문서화, 검증, 코드 생성 워크플로에 동시에 끌어들였다.

Draft 2020-12는 방언과 메타 스키마를 포함하여 구현자들에게 안정적인 목표를 제공했다.

확장이 산문이나 벤더 관례에 숨겨지지 않고 일급이며 테스트 가능할 때 형식은 퍼져 나간다.

OpenAPI 3.1은 2021년 2월 18일에 JSON 스키마 draft 2020-12와 완전히 호환되는 형태로 출시되었다. 이로써 JSON 스키마는 단독 검증기 형식이 아니라 거대한 API 도구 생태계의 공유 계약 계층이 되었다.

근거 확인하기

출처

  1. JSON Schema: A Media Type for Describing JSON Documents JSON Schema · json-schema.org
  2. OpenAPI Specification 3.1.0 Released OpenAPI Initiative · openapis.org ·