跳至主要内容
所有文章作者

Marsh Gardiner

OpenAPI 月球漫步 2024

作者 公告, 博客, 新闻

一名宇航员在月球上插着一面带有 OpenAPI 徽标的旗帜。OpenAPI 规范的下一步是什么?v4 如何改进 OpenAPI v3 的成功?规范如何在 AI 和 LLM 的背景下帮助解决问题?

随着 2023 年的结束,这些问题的答案开始成形。随着在 2024 年底发布 v4 “月球漫步”的积极目标,这将是激动人心的一年。

由于有许多工作要做,因此有必要制定一些指导原则。在回顾了去年提出的主要提案和讨论后,这些原则是语义签名包容性组织升级,它们的顺序很重要

    1. 🌖 语义提供目的。仅仅描述 API 的机制而不描述其语义是不够的,无论消费者是人类还是 AI。语义将“什么”(… 这是做什么的?)和“为什么”(… 这为什么重要?)与“如何”(… 这是如何工作的?)联系起来。

      OpenAPI 帮助人们更快地构建更好的 API,并且工具生态系统年复一年地提供更多价值。今天在 2023 年的新事物是新类型 API 消费者的兴起——生成式 AI。LLM 可以处理 OpenAPI 描述,然后使用该 API 来解决问题。随着生成式 AI 理解自然语言的能力,OpenAPI 可以帮助非开发者以以前从未见过的可访问性水平利用 API 的力量。为了充分实现这种潜力,API 生产者应该用传达这些 API 操作的含义和目的的细节来装饰他们对 HTTP 请求的机械描述。反过来,这也有助于人和 LLM 获得更好的结果。

      换句话说,人们几个世纪以来一直在使用柔软的自然语言彼此交流,我们几十年来一直在使用脆脆的编程语言与机器交流。LLM 连接了柔软和脆脆的世界,这意味着之前无法使用 API 的大量人现在可以使用 API 了。

      无论您对生成式 AI 的看法如何,从过度炒作到改变世界,我们都可以预期许多人将使用 OpenAPI 来驱动基于 AI 的 API 消费者。如果 OpenAPI 没有努力满足该社区的需求,他们就会找到替代方案。

    2. 🌒 请出示签名! API 代表一组函数,每个函数都描述了面向客户端的目的。函数可以通过其签名来识别,该签名与一组 HTTP 交互相关。月球漫步将此概念置于其中心。

      任何 HTTP API 都是为了达到某个目的。API 消费者更喜欢重用现有功能,理想情况下,他们可以用最适合他们的方式了解该功能。PUT/PATCH/DELETE 返回 200 或 204 是一个实现细节,与它为客户端执行的功能相比,它相形见绌。如今,在 OpenAPI 中表达 API 函数签名的途径有限。pathItem 无法使用查询参数来区分操作。每个 HTTP 方法只能有一个操作。由于缺乏对唯一签名的正式定义,这些是对 API 函数签名的人为约束。OpenAPI 过去的工作重点是使开发人员能够描述 HTTP API。这使它们重新排序,以便开发人员可以使用 OpenAPI 来定义具有唯一签名的 API 函数,然后将每个签名映射到 HTTP 机制。

    1. 🌕 包容性需要一个大帐篷:月球漫步旨在描述所有基于 HTTP 的 API。虽然它对 HTTP API 的设计方面保持中立,但它认识到拥有不同设计风格和意见的重要性。

      月球漫步应该能够描述开发人员可能已经拥有的 HTTP API,以及设计他们可能想构建的 API。它应该能够准确地将 API 函数的签名映射到 API 提供的 HTTP 请求和响应的实际实例。月球漫步确实更喜欢面向资源的 API 风格,因为它们非常流行,但它应该能够描述纯粹的 RPC API,即使这些 API 签名是通过 HTTP 标头值或请求正文值来区分的。

    1. 🌗 通过关注点分离实现组织。例如,API 的不断变化的形状应该独立于 API 部署。API 部署可以使用不同的安全方案进行保护。API 函数的签名不应与内容模式格式紧密耦合。

      为了支持具有不同需求的不断增长的客户群,功能数量无疑会增长,从而带来更多复杂性。为了抵消这一点,我们将对 API 描述的不同方面的模块化应用更多严格性。我们将努力消除目前存在的歧义,并利用现有标准来最大程度地减少不必要的创新。我们的目标是为 API 描述消费者、作者和工具提供者提供更好的体验。

    1. 🌑 机械升级。OpenAPI v3 的一个重要原则是它提供了从 v2 直接升级的路径。月球漫步继承了这一原则,这意味着它必须再次能够从 v3(以及扩展的 v2)机械地升级到月球漫步。

像 OpenAPI 这样的重要开源项目依赖于许多人的贡献。如果您像我们一样对上述想法或利用 AI 帮助更多人使用 API 的机会感到兴奋,那么请参与进来!一个很好的开始方法是加入我们每周四的电话会议(详细信息),任何想加入的人都可以!

 

您可以参与创建 OpenAPI 规范,以下是方法

作者 博客

OpenAPI 规范是如何演变的?流程是什么?您如何参与?今天我们将尝试回答这些问题,并重点介绍

  • 技术开发者社区,它存在的理由以及它的运作方式
  • OpenAPI 规范下一次主要修订的时间表和路线图

Open API Logo

去年 12 月,Swagger 2.0 规范由 SmartBear 捐赠,并成为 OpenAPI 规范(有时缩写为 OAS)。该规范 100% 兼容,只是名称和品牌更新了。为什么这很重要?在某些方面,这并不重要——之前没有什么“损坏”的地方。但是,为了使有时有竞争力的供应商将对该格式的支持构建到其产品中并就行业标准进行协作,他们需要一个中立的治理模型。这正是为什么在 Linux 基金会下创建了 OpenAPI Initiative,以发展以前称为 Swagger 规范的东西。

_meta_issue_specification_documentation_structure_and_supporting_docs_issue_589_oai_openapi-specificationOpenAPI Initiative 的章程创建了,“一个开放源代码的技术开发者社区 (TDC),对任何参与者开放,无论他们是否是 OAI 会员。”TDC 负责监督 OpenAPI 规范的演变。如今,TDC 有 6 名成员,随着社区的个人成员站出来推动该格式,它将随着时间的推移而发展。好消息是,自从 2.0 规范发布以来,社区中的人们一直在提供有关如何改进它的建议。许多这些问题已被确定为下一次主要发布的候选问题——现在的挑战是确定下个版本中包含哪些问题,并将这些更改带到候选发布状态。

为了解决大量的待处理问题,Tony Tam (Swagger 的创始人,也是 TDC 的领导者) 识别出了一些高级主题,例如 安全协议与负载。他添加了对各个问题的引用,并在 GitHub 上将它们标记为 OpenAPI.Next 元问题。理解 OpenAPI 规范 3.0 发展方向的最佳方法是查看这些元问题。在接下来的几周内,Jason HarmonDarrel MillerMarsh Gardiner 将尝试通过个人博客文章对其中一些问题进行分解,以解释其背后的思考。

clarification_about_yaml_by_fehguy_pull_request_635_oai_openapi-specification虽然 TDC 努力通过问题和拉取请求进行沟通,但我们都是志愿者,只能利用业余时间来进行 OpenAPI 的工作。有时,一个小时的电话会议更快捷,我们每隔几周就会举行一次。此外,我们使用 OAI 的 Slack 团队来关注问题或建议,当 GitHub 通知无法完成工作时。元问题中的子问题提出的更改会导致一个拉取请求 (PR),然后通过在问题上使用 反应来投票决定该 PR。

如何参与?如果您对某个主题特别感兴趣,请搜索现有问题并加入讨论,如有必要,可以发起新的讨论。

其中一些主题是哲学性的,例如 OpenAPI 是一个开放世界还是封闭世界的契约?。其中一些主题是充满热情的,例如 基于标头的支持多种请求/响应模型。其他主题深入探讨了关于 JSON-SchemaYAML 规范 的问题。在接下来的几周内,我们将在博客上发布一些关于元问题和子问题的内容,并深入了解围绕它们的讨论性质。

 


Marsh Gardiner作者简介

Marsh Gardiner
关于 Marsh,以下三个陈述中至少有两个是正确的:没有人比他更热爱 API。他是一个困在产品经理身体里的开发者。他讨厌写简介。

在 Marsh 职业生涯的半随机漫步中,他为 EA 和 Fox 制作了电子游戏,创建了交互式学习环境,启动了一个教育非营利组织,并在 2009-2018 年的 API 战争中英勇战斗。在 Apigee,他设想为应用程序和 API 创造更美好的未来。