解决方案
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 工具生态系统的共享契约层,而不仅仅是一个独立的验证器格式。
从这里,追溯依据
参考来源
- JSON Schema: A Media Type for Describing JSON Documents JSON Schema · json-schema.org
- OpenAPI Specification 3.1.0 Released OpenAPI Initiative · openapis.org ·