API 工具领域曾有过一次令人遗憾的擦肩而过:OpenAPI 使用了类似 JSON 的模式对象,但它们并非完全的 JSON Schema。验证器、代码生成器和文档工具不得不学习细微的差异,因此同一份 API 契约在不同技术栈中可能意味着不同的东西。

优雅的做法不是创建另一种仅用于 API 的语言。JSON Schema 让模式本身成为一种 JSON 媒体类型,并通过词汇表和元模式声明哪些关键字和行为在起作用。于是 OpenAPI 3.1 可以直接说:使用 JSON Schema 2020-12 草案,而不是仿制品。

结果是一个通过成为其他标准之下的语法而胜出的标准。OpenAPI 称其 3.1 版本与最新的 JSON Schema 草案 100% 兼容,而 JSON Schema 则获得了用于验证、代码生成、UI 和文档的稳定扩展模型。

让模式成为可扩展的词汇表

模式保持为普通 JSON,因此开发者可以用现有工具读取、比对差异并生成它。

词汇表为扩展提供了名称和边界,而不是让每个平台发明私有关键字。

OpenAPI 的采用将 JSON Schema 一次性拉入 API 文档、验证和代码生成工作流。

2020-12 草案为实现者提供了稳定的目标,包括方言和元模式。

当扩展是一等公民且可测试,而不是隐藏在文字说明或供应商惯例中时,一种格式才能传播开来。

OpenAPI 3.1 于 2021 年 2 月 18 日发布,完全兼容 JSON Schema 2020-12 草案。这使 JSON Schema 成为庞大 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 ·