跳至主要内容

OpenAPI v3.1 工具开发者资源

作者 2022 年 5 月 11 日博客

这篇文章由 Green Turtle 的绿色科技顾问 Phil Sturgeon 和 Protect Earth 主席撰写。如果您想捐赠给 Phil 选择的慈善机构,请参阅 Protect Earth,该组织正在一个接一个地重新造林英国。

OpenAPI v3.1.0 有 很多很棒的变化,解决了一些问题,例如 JSON Schema 对象和 OpenAPI Schema 对象之间的细微差别,并添加了对 Webhook 的支持。

升级工具可能很棘手,但这应该比从 v2 到 v3.0 的跳跃容易得多。为了减少工作量,我们为工具开发者提供了一些方便的资源,提供测试用例、示例以及一般性指导。

首先,这些文章将从用户的角度展示 v3.0 和 v3.1 之间的差异

您需要支持所有内容吗?

其中一些内容更面向最终用户以及他们需要做些什么,但工具供应商需要做些什么呢?

对于像 Webhook 这样的新功能,您可以问问自己:这个工具需要支持 Webhook 吗?如果是文档工具,很可能需要!如果该工具正在验证传入您的服务器的 Web 请求,那么可能不需要。

一些工具已经采用了一种 3.1.0 支持定义,即“3.1.0 文档在同一个工具中与 3.0.0 文档的工作方式相同”,这是一个很好的第一步。然后可以稍后添加对其他新关键字的支持。

我认为,让 3.1.0 文档在基本级别上工作比支持 3.1.0 中的每个功能都更重要。随着您的进展,最终用户会对他们最感兴趣的部分提出功能请求。

JSON Schema 整合

对于其他大多数更改,区别在于,OpenAPI Schema 对象不再使用与 JSON Schema 非常相似的 schema 对象,而是现在实际上是 JSON Schema。这里有一些技术细节,从技术上讲,OpenAPI Schema 定义了自己的 JSON Schema 词汇,它扩展了主要的 JSON Schema 词汇,并添加了对 discriminator 的支持。由于在 3.1.0 中,discriminator 的用法被澄清为纯粹是“提示”或现有 oneOf、anyOf、allOf 的快捷方式,因此大多数工具都可以安全地忽略它。

简而言之:您可以使用任何有效的 JSON Schema 工具来处理 OpenAPI 中 schema: 对象的内容,这意味着许多工具可以逐步减少对手工制作的 schema 检查代码的依赖,并利用任何现有的 JSON Schema 工具

例如,如果您维护的工具之前在 JavaScript 中手动验证 OpenAPI Schema,那么将它包装在 if ($version == "3.0") 语句中可能是一个好主意,使用旧逻辑,弃用它,然后如果版本是 3.1,您可以利用强大的工具,例如 AJVHyperJump 来完成所有繁重的工作。这会让您的工具立即从它们完成的所有工作中受益,为您的工具提供对现代 JSON Schema/OAS3.1 关键字的支持,例如 if/then/else

这也意味着它们可以完成其他更改的繁重工作,这些更改随着 JSON Schema 成熟为稳定版本而出现(尽管如果您也能帮助它们会很棒)。

测试用例

为了确保您的工具与 OpenAPI v3.1 一起使用,您需要一些 OpenAPI v3.1 文档来进行测试。目前还没有官方的 OpenAPI v3.1 文档列表,但社区编写了一些示例文件,这些文件可以在测试套件中使用,以显示通过或失败的场景

验证 Schema

许多工具使用一个 JSON Schema 文档来描述有效的 OpenAPI 文档。是的,这句话很元,但如果你明白我的意思,那么你就会想知道是否有一个针对 OpenAPI v3.1 的新版本?好消息是有的!

查找其他 v3.1 工具

要查看其他 OpenAPI 工具的运行情况,请查看 OpenAPI.Tools。也许您可以利用其他工具,或者可以与其他开发人员合作,或向他们提问,或聘请他们来处理您的工作等等。

不要忘记向 OpenAPI.Tools 发送一个 pull request 来声明您支持 v3.1,方法是在 _data/tools.yml 中添加 v3_1: true。您也可以在 GitHub 上添加 openapi31 标签,以便其他工具聚合器也可以找到您!

展开所有返回顶部转到底部