面向工具开发人员的OpenAPI v3.1资源

313 阅读3分钟

OpenAPI v3.1.0有一堆巨大的变化,解决了JSON Schema对象和OpenAPI Schema对象之间的微妙差异等问题,并增加了对Webhooks的支持。

升级工具可能很棘手,但这应该比从v2到v3.0的跳跃要容易得多。为了减少工作量,我们把一些方便的资源放在一起,为工具开发人员提供测试案例、例子和一般的指导。

你需要支持所有的东西吗?

其中一些内容更多的是针对终端用户和他们需要做的事情,但工具供应商需要做什么?

对于像webhooks这样的新功能,你可以自己想一想:这个工具需要支持webhooks吗?如果它是一个文档工具,可能是!如果它是一个文件工具,可能是。如果这个工具是验证进入你的服务器的网络请求的,那么可能不需要。

一些工具对3.1.0支持的定义是:"3.1.0的文件将与3.0.0的文件在同一工具中同样工作",这是一个好的第一步。然后可以在以后增加对其他新的关键词的支持。

我认为,让3.1.0的文档在基本水平上工作比支持3.1.0的每一个功能更重要。终端用户会在你的工作中为他们最感兴趣的部分创建功能请求。

JSON模式的整合

对于其他大部分的变化,不同之处在于不再使用与JSON Schema非常相似的模式对象,OpenAPI模式对象现在是字面上的JSON Schema。这里涉及到一些技术问题,从技术上讲,OpenAPI Schema已经定义了它自己的JSON Schema词汇表,它扩展了主要的JSON Schema词汇表并增加了对discriminator 。由于在3.1.0中澄清了disciminator 的用法,它纯粹是对现有的oneOf、anyOf、allOf的 "提示 "或快捷方式,因此绝大多数工具都可以安全地忽略它。

tl;dr:你可以使用任何有效的JSON Schema工具来处理OpenAPI中schema: 对象的内容,这意味着很多工具可以逐步放弃对手工制作的模式检查代码的依赖,而利用任何现有的JSON Schema工具

例如,如果你维护的一个工具以前是在JavaScript中手动验证OpenAPI模式,那么把它包在一个if ($version == "3.0") 语句中可能是一个想法,使用那个旧的逻辑,废除它,然后如果版本是3.1,你可以利用强大的工具,如AJVHyperJump来做所有的重活。这将使你的工具立即受益,因为它们为你做了所有支持现代JSON模式/OAS3.1关键字的工作,如if/then/else

这也意味着他们可以为JSON Schema成熟到稳定版本的其他变化做繁重的工作(尽管如果你能帮助他们也会很好)。

测试案例

为了确保你的工具能在OpenAPI v3.1中工作,你需要一些OpenAPI v3.1的文档来测试。没有官方的OpenAPI v3.1文档列表,但有一些由社区编写的例子文件,可以在测试套件中使用,以显示通过或失败的情况:

验证模式

许多工具使用描述有效OpenAPI文档的JSON Schema文件。是的,这是一个非常元的句子,但如果你知道我的意思,那么你想知道是否有一个新的OpenAPI v3.1?好消息是,有了!

查找其他v3.1工具

要了解其他OpenAPI工具的情况,请看OpenAPI.Tools。也许你可以利用一些其他的工具,或者你可以和一些开发者合作,或者向他们提问,或者雇佣他们来做你的事情,等等。

别忘了向OpenAPI.Tools发送一个拉动请求,说明你什么时候支持v3.1,把v3_1: true 添加到_data/tools.yml 。你也可以在GitHub上弹出一个openapi31 标签,这样其他工具聚合者也能找到你。