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

OpenAPI Initiative

Treblle,API 监控和分析,是 OpenAPI 的最新成员

作者 博客

OpenAPI Initiative 是一个由面向未来的行业专家组成的联盟,致力于发展和实施 OpenAPI 规范 (OAS),今天宣布 Treblle 已加入成为新的成员。

Treblle 提供 API 监控和分析解决方案,使“了解您的 API 和使用它们的应用程序发生了什么变得很容易”。 Treblle 的成立是为了解决创始人 Vedran Cindrić 和 Darko Blaževic 本身遇到的问题。

Treblle 总部位于克罗地亚的萨格勒布,于 2021 年 7 月宣布通过 Nauta Capital 获得 120 万欧元融资。

“我希望 Treblle 加入 OpenAPI 规范,因为我坚信,当涉及到 API 文档时,我们需要某种标准、指南或北极星,”Treblle 创始人 Vedran Cindrić 说。“在过去的 10 年里,我一直致力于构建产品、平台、应用程序和 API。我看到了一些具有出色文档的出色 API,但也看到了一些文档糟糕的糟糕 API。我认为 OpenAPI 规范是推动文档向前发展的好方法,更重要的是,推动开发人员向前发展,不仅编写文档,而且构建更好的 API。”

完整的 Treblle API 监控和分析信息,请访问:https://treblle.com/

Treblle 的更多信息

免费 Treblle 电子书,用于构建出色的 REST API:https://treblle.com/ebooks/the-10-rest-commandments

适用于 PHP、Python、Node、Laraval 等的 Treblle:https://github.com/Treblle

Treblle 在 Reddit 上:https://www.reddit.com/r/DevelopingAPIs/

OpenAPI 资源

要详细了解参与 OpenAPI 规范的演变,请访问:https://www.openapis.org.cn/participate/how-to-contribute

关于 OpenAPI Initiative

OpenAPI Initiative (OAI) 由一群面向未来的行业专家创建,他们认识到对 API 描述进行标准化的巨大价值。作为 Linux 基金会下属的一个开放治理结构,OAI 专注于创建、发展和推广一种供应商中立的描述格式。OpenAPI 规范最初基于由 SmartBear Software 捐赠的 Swagger 规范。要参与 OpenAPI Initiative,请访问 https://www.openapis.org.cn

关于 Linux 基金会

Linux 基金会成立于 2000 年,拥有 1000 多名成员支持,是全球领先的开源软件、开放标准、开放数据和开放硬件协作平台。Linux 基金会项目(如 Linux、Kubernetes、Node.js 等)被认为对全球最重要的基础设施发展至关重要。其开发方法利用了成熟的最佳实践,并满足了贡献者、用户和解决方案提供商的需求,从而为开放协作创建可持续的模式。有关更多信息,请访问 linuxfoundation.org。

今年的 API 规范大会 (ASC 2021) 数字

作者 博客

由 OpenAPI Initiative 组织的今年的 API 规范大会 (ASC) 于 2021 年 9 月 28 日至 29 日以虚拟形式举行。该会议继续突飞猛进,引起了对 API 技术感兴趣的人们的关注。听到行业专家讨论 OpenAPI 规范、RAML、Blueprint、gRPC、OData、JSON、Schema、GraphQL、AsyncAPI 和其他格式等主题,真是令人激动。例如,主旨演讲 Mandy Whaley 和 Yina Arenas(微软)领导的大规模 API 工作您认为您了解 JSON Schema 吗?由 Ben Hutton(Postman/JSON Schema)提供。或者 AsyncAPI 2.0:由 Someshekhar Banerjee(eBay)提供,使事件驱动世界成为可能。这些讨论帮助与会者熟悉不同的格式,并了解如何在实践中使用它们。

有关 ASC 2021 的完整 Linux 基金会报告,“透明度报告:API 规范大会 (ASC) 2021”现已提供(PDF)。

我们有来自 37 个国家的 319 人参加,其中大多数人参加了 10 个会议。

会议结束后进行的调查显示,89% 的与会者对会议上提供的内容评价为“很好”或“优秀”。

整个会议的费用为 39 美元,并向开源社区的活跃成员颁发了 10 个社区奖学金。OpenAPI 从每笔注册费中捐赠了 10 美元,共计 2500 美元捐赠给 Code2040,以支持他们的使命。Code2040 通过其与科技公司的 Fellows Program,在科技行业培养种族平等视角。该会议从 CHAOSS D&I 活动徽章计划中获得了金牌徽章,评级最高,表明我们提倡健康的 D&I 实践。

在线活动为我们创造了接触新受众和扩大影响力的机会。对于那些错过会议或想再次观看活动的人,主旨演讲和会议录制视频可在 我们的 YouTube 频道 上观看。演讲者的演示文稿也可以从每个演讲的 这里 下载。

 

下载有关 ASC 2021 的完整 Linux 基金会报告,“透明度报告:API 规范大会 (ASC) 2021”(PDF)。

ReadMe,API 文档中心,加入 OpenAPI Initiative

作者 博客

OpenAPI Initiative 是一个由面向未来的行业专家组成的联盟,致力于发展和实施 OpenAPI 规范 (OAS),今天宣布 ReadMe 已加入成为新的成员。

借助 ReadMe,团队可以创建交互式开发人员中心,帮助用户学习、构建和调试 API 问题。访问实时 API 请求历史记录可以改善开发人员支持,并提高对 API 使用方式的可见性,从而优先考虑改进。

ReadMe 由 Accel 支持,为 Notion、Scale AI、Lyft 和 Intercom 等 10,000 多个 API 团队提供开发人员中心。

专注于更易于使用的 API

“ReadMe 的使命是让文档和 API 对每个人都更好。使每个 API 更易于使用和更有趣的目标指导着我们所做的一切——从大型产品更新(如我们最近的 API 参考重新设计或 ReadMe 食谱)到诸如 API SDK 生成的代码示例和基于模式的工具提示等小细节,”ReadMe 创始人兼首席执行官 Gregory Koberger 说。“OpenAPI 规范帮助我们更好地理解 API 的复杂性,因此我们可以为客户更好地抽象掉这种复杂性。我们期待将我们对开发人员体验的见解带到该组织!”

支持 OpenAPI v3.1

除了加入 OAI 之外,今天 ReadMe 宣布了对 OpenAPI v3.1 的完整上传支持。在 ReadMe 中上传 OpenAPI 3.1 文件后,用户可以利用其 API 参考中不断增长的 OpenAPI 功能集,包括最近添加的对标签和回调对象的支持。

如果您想直接联系 ReadMe,请发送电子邮件至 [email protected] 或在 Twitter 上联系 @readme

OpenAPI 资源

要详细了解参与 OpenAPI 规范的演变,请访问:https://www.openapis.org.cn/participate/how-to-contribute

关于 OpenAPI Initiative

OpenAPI Initiative (OAI) 由一群面向未来的行业专家创建,他们认识到对 API 描述进行标准化的巨大价值。作为 Linux 基金会下属的一个开放治理结构,OAI 专注于创建、发展和推广一种供应商中立的描述格式。OpenAPI 规范最初基于由 SmartBear Software 捐赠的 Swagger 规范。要参与 OpenAPI Initiative,请访问 https://www.openapis.org.cn

关于 Linux 基金会

Linux 基金会成立于 2000 年,拥有 1000 多名成员支持,是全球领先的开源软件、开放标准、开放数据和开放硬件协作平台。Linux 基金会项目(如 Linux、Kubernetes、Node.js 等)被认为对全球最重要的基础设施发展至关重要。其开发方法利用了成熟的最佳实践,并满足了贡献者、用户和解决方案提供商的需求,从而为开放协作创建可持续的模式。有关更多信息,请访问 linuxfoundation.org。

宣布 Open Finance,一个新的 OpenAPI 特别兴趣小组

作者 博客

OpenAPI 已经组建了一个特别兴趣小组 (SIG),目的是识别 API 使用案例和行为,以在不久的将来赋能 Open Finance 解决方案。

Open Finance 是 Open Banking 的演变,是金融科技领域一项相对较新的创新。这在很大程度上是由 2016 年英国和 2018-19 年欧盟分别围绕客户数据和交易的法律法规推动的。世界各地的其他市场也开始开发基于 Open Finance 的解决方案……或者至少开始密切关注这些发展。

考虑到所有这些因素,OpenAPI Initiative (OAI) 创建了一个 SIG 来支持 API 的采用,并帮助为银行和金融的下一阶段演变发展数字基础设施。最初的重点将是服务欧盟和欧洲经济区内的金融机构及其客户,因为他们正在快速开发解决方案以遵守支付服务指令 2。随着为欧洲开发的解决方案,它们将立即适用于其他市场。

OAI 已任命 Refael Botbol Weiss(领英/GitHub)为该小组的联络人。请通过 [email protected] 联系他,了解有关加入的信息和咨询。

最初的步骤将是组建一个由发展和金融领域专家组成的论坛,讨论围绕开放式金融实施的问题,以及促进开放式金融解决方案所需的 API 行为。此外,还将讨论 Open Finance 技术的主要用例,其中可能包括银行、信用合作社、保险公司、信用局、房地产集团、理财规划师等等。

任何 OAI 成员都可以参与该 SIG。要注册 OAI,请点击此处

要获取更新和有关参与的更多信息,请点击此处

一次良好的旅行体验始于一个单一的预订门户 - 开放 API 如何引领潮流

作者 博客

有关 OpenAPI Initiative 和 #sig-travel 的更多信息,请加入 Slack 上的对话。https://open-api.slack.com/archives/C0122NPKUR2

如今的旅行者越来越倾向于购买体验,而不仅仅是飞机上的座位或酒店的床位。事实上,旅行体验从预订环境本身开始,消费者期望一个单一门户连接到所有旅行提供商和旅行零售商。人们正在寻找他们在日常生活中使用的交付和拼车应用程序的便利性和价值,并希望将其应用于旅行体验。

旅游业落后于现代预期,是因为它落后于最新的技术趋势。就这么简单。

创建端到端旅程很困难

如今,供应商之间广泛使用的流程和协议,其基础是 1960 年代达成的旅行标准,并随着时间的推移而修改。最初是为了解决航空公司联运问题而创建的,允许一张机票包含多个航空公司的航班,这些协议已被用于整个旅游行业。

随着时间的推移,曾经行之有效的解决方案开始显露出其局限性。行业内正在进行多项努力,以打破过去,追求一种方法,在这种方法中,旅游产品可以像数字空间中的任何其他零售产品一样进行处理。

但是,旅行有一些独特的需求,因为产品是短暂的(航班起飞后,空座位就毫无价值了),并且在大多数情况下与位置有关(飞机必须降落在机场)。此外,在大多数情况下,旅行产品必须与其他旅行产品结合起来才能满足创建旅行的请求。

创建端到端旅程意味着多个提供商提出的和/或提供的多个产品组合而成的组合产品。这增加了一层复杂性,即维护产品之间的关系,而其他零售类别则避开了这种复杂性。

关键要点:将体验作为一种新的旅行零售方式,需要旅行市场参与者之间达到新的互操作性水平。

解决互操作性问题将打开广阔的机遇

解决支持基于体验、整体旅程、大规模零售的问题,可以为当今运营的大多数现有分销渠道释放巨大的经济机会,或者创造新的渠道。主流分销渠道主要集中在航空运输方面,在美国,航空运输的总营业收入为 1200 亿[1] 美元。然而,2019 年美国旅游总收入为 1.1[2] 万亿美元。

其中大部分是消费者自己想办法安排行程,这是一个巨大的、错失的机会,可以利用自动化。为了构建人们正在寻找的体验,除了像 Expedia 这样的即时旅行和住宿门户网站之外,消费者还在不同的网站和日历之间跳跃,以寻找餐厅、博物馆门票和水上摩托艇出租。

我们没有看到更多样的产品供应的原因不难理解:对于主流分销商来说,通过定制 API 连接、维护和监控小型供应商不值得付出努力。

通过解锁互操作性,旅行产品和服务的提供商将能够使用他们目前由于成本和复杂性而被排除在外的渠道。公众渴望走出家门,再次体验世界,但希望避免令人厌恶的 DIY 旅行编排和管理任务。他们想要体验主导的零售,像酒店这样的行业正在投资这种零售,但仅限于酒店级别,而不是整个行程级别。

旅游业无法承受 API 混乱继续成为更有效零售的障碍。

在解决方案上达成一致至关重要

作为回应,OpenTravel 联盟 (OTA) 和 OpenAPI Initiative (OAI) 将共同努力,重点关注 API 约定和标准,而不仅仅是消息。在 OAI 中,现在有一个专门的兴趣小组专注于解决旅行问题(#sig-travel)。

Travel SIG 将成为旅行行业与 OpenAPI 规范 (OAS) 相关的需求的联络点。OAS 是一种广泛的规范,旨在帮助开发人员以尽可能灵活的方式解决现实世界的业务问题。

为了实现互操作性并减少 API 混乱,从而降低旅行中的分销成本,需要在 API 行为方面更加一致。OpenTravel 将带头提供开源工具并发布参考架构,其中包含遵循 OAS 的参考实现。OTA 2.0 及其模型驱动的方法将构成这种更全面方法的基础,该方法支持所有旅行垂直领域。这将与现有的旅行标准机构和行业协会合作进行。

首要目标是降低发布、获取、分发和营销数字旅行产品的连接成本。

我能做些什么?

加入讨论,帮助构建一个更现代、更无缝的旅游业!有关 OpenAPI Initiative 和 #sig-travel 的更多信息,请加入 Slack 上的讨论。 https://open-api.slack.com/archives/C0122NPKUR2

有关 OTA 2.0 的更多信息,包括成为 Open Travel 会员,请访问 www.opentravel.org 或联系 Jeff ErnstFriedman,邮箱地址为 [email protected]


[1] 资料来源:Phocuswright 白皮书,航空销售和旅行社分销渠道 2019 年 4 月

[2] 资料来源:美国旅游和旅游概览(2019 年),美国旅游协会。

Kubeshop,Kubernetes 加速器/孵化器,加入 OpenAPI Initiative

作者 公告, 博客

OpenAPI Initiative 是一个由面向未来的行业专家组成的联盟,致力于发展和实施 OpenAPI 规范 (OAS),今天宣布 Kubeshop.io 已加入成为新成员。Kubeshop 的首席技术官 Ole Lensmar 从 2016 年 OpenAPI Initiative 成立之初就担任主席,一直到 2020 年。我们欢迎这位熟悉的面孔回归! 

Kubeshop 是一个开源加速器/孵化器,专注于 Kubernetes(“K8s”)。Kubeshop 识别需求,并为 k8s 领域内的项目提供资源和指导,特别专注于帮助开发人员、测试人员和 DevOps 工程师使用旨在简化复杂工作流程并提高生产力的工具。目前,Kubeshop 是 KuskKubtestMonokle 的所在地。

  • Kusk 允许用户将 OpenAPI 规范用作 Kubernetes 清单的真实来源,从而简化了跨多个流行的 Kubernetes Ingress 控制器进行集群配置和管理的过程。
  • Kubtest 提供了一个框架,用于测试在 Kubernetes 下运行的应用程序和 API,使团队能够将测试编排和执行与 ci/cd 工具分离,并集中管理和分析测试结果。
  • Monokle 简化了与管理和调试 k8s 清单相关的日常任务和工作流程 

“加入并支持 OAI 对我们来说是显而易见的选择;OAI 对于 OpenAPI 规范的持续采用和演进至关重要,我们很高兴能够托管针对 OpenAPI 特定需求和 Kubernetes 工作流程的项目,”Kubeshop 首席技术官 Ole Lensmar 说。

我们期待着见证 Kubeshop 的成长和发展,并帮助 k8s 开发人员! 

OpenAPI 资源

要详细了解参与 OpenAPI 规范的演变,请访问:https://www.openapis.org.cn/participate/how-to-contribute

关于 OpenAPI Initiative

OpenAPI Initiative (OAI) 由一群面向未来的行业专家创建,他们认识到对 API 描述进行标准化的巨大价值。作为 Linux 基金会下属的一个开放治理结构,OAI 专注于创建、发展和推广一种供应商中立的描述格式。OpenAPI 规范最初基于由 SmartBear Software 捐赠的 Swagger 规范。要参与 OpenAPI Initiative,请访问 https://www.openapis.org.cn

关于 Linux 基金会

Linux 基金会成立于 2000 年,拥有 1000 多名成员支持,是全球领先的开源软件、开放标准、开放数据和开放硬件协作平台。Linux 基金会项目(如 Linux、Kubernetes、Node.js 等)被认为对全球最重要的基础设施发展至关重要。其开发方法利用了成熟的最佳实践,并满足了贡献者、用户和解决方案提供商的需求,从而为开放协作创建可持续的模式。有关更多信息,请访问 linuxfoundation.org。

API 多面手 Arnaud Lauret 介绍了他将在 ASC 2021 上参加的 4 个必不可少的会议

作者 博客, 活动

我们与 Arnaud Lauret 进行了交谈,他以 API 多面手的身份而闻名,也是《Web API 设计》一书的作者,以了解更多关于即将到来的 ASC 2021(9 月 28 日至 29 日) 的信息。 

Lauret 将于 9 月 28 日星期二下午 11:20 PDT 开始,在 “利用 OpenAPI 进行 API 设计审查” 中进行演讲。

Lauret 是巴黎法国 Natixis 的高级 API 架构师,目前帮助从高管到开发人员的每个人了解 API 是什么、为什么重要以及“如何实施”。他通过审查和挑战 API 设计、提供培训和建立 API 设计指南,帮助团队设计 API。

在 ASC 2021 的 API 设计审查现场演示会议中,您将重点介绍哪些 3 个关键的 API 设计原则?

内/外、语义和一致性。 

一个仅仅是技术连接器,提供对底层混乱的访问权限的 API,粗暴地将内部内容暴露给外部,对于消费者和提供者来说都是一场噩梦。在消费者方面,人们会得到一个复杂的 API,需要很高的专业知识,需要付出很多努力才能完成简单的事情。在提供者方面,您可能要担心意外后果,例如数据损坏或安全漏洞。

语义非常重要,在设计 API 时,词语的含义至关重要。选择错误的词语,人们可能无法理解您的意图,API 应该做什么,提供什么价值,或者他们可以使用返回的数据做什么。

最后,也是最重要的,就是一致性。设计一个一致的 API 很困难,但值得付出代价。与世界其他地方保持一致将使开发人员在第一次看到您的 API 时感到宾至如归。在您的 API 之间以及 API 之内保持一致将使开发人员能够轻松地在操作、数据模型或参数之间建立连接,因此他们能够掌握您的 API,而无需多加考虑。  

API 设计审查可以基于事实,而不是意见吗?这可能吗?

是的。这并不总是那么容易,但我一直在努力做到。基于无稽之谈的意见的 API 设计审查毫无意义。人们不在乎你是否更喜欢蓝色而不是橙色。问题是,在特定情况下,为什么蓝色比橙色更好。所有提出的内容都必须有合理的解释和事实支持。 

拥有指南真的很有帮助:这些预先定义的规则提供了每个人都同意的客观论据。但是指南不能解决所有设计问题,它们只提供高级指导,总会有更多具体的职能/业务问题导致多种可能的设计。每个设计都符合指南。但是哪个是“正确”的?您必须找到“事实”来做出决定,您可以利用您对业务规则的了解、未来可能发生的事情等等。只要一个解决方案有每个人都同意的有效解释,那就是基于事实的审查。

您还将在 ASC 2021 上参加哪些其他演讲,为什么?

实际上,我希望我能参加所有演讲!有太多有趣的会议,但我最喜欢的 4 个是: 

  • API 服务条款:从创意公用许可到机器可读性 – Célya Gruson-Daniel,COSTECH & Mehdi Medjaoui:我是一个“机器可读性迷”,我喜欢尝试对非结构化内容进行结构化,因为它简化了机器和人类的工作。将机器可读性引入 TOS 对我来说可能产生重大影响。它可以简化服务提供商之间的比较;作为参与招标流程选择软件解决方案的人,我很高兴能做到这一点。我相信还有其他完全疯狂的结果。我迫不及待地想参加这次会议!  
  • 我们将 OpenAPI 文档纳入了我们的服务目录。现在怎么办? – Shai Sachs & Zoe Song,Wayfair:我在一家大型组织工作,许多不同的团队,许多不同的 API,这并不容易。Wayfair 的会议与我的环境产生共鸣,他们还将讨论我对 Backstage 开源服务目录感兴趣的内容。
  • 寻找衡量 API 设计复杂性的方法 – Stephen Mizell,API 顾问:我帮助人们设计 API,我自己也设计 API。评估一个设计是否复杂并不总是容易。有时它只是感觉复杂或简单,我不喜欢这样,仅仅依靠毫无根据的感觉。我更希望通过更具体的东西来支持我的评估,如果可能的话,是真实的事实。这就是为什么我非常期待 Stephen 对这个主题的看法。
  • API 规范审查中应避免的错误 – Rahul Dighe,PayPal:我已经做过数百次 API 设计审查。我学到了很多,找到了各种情况的解决方案,但有时它们并不奏效,或者我可能会遇到全新的情况。这就是为什么我一直对学习他人的做法感兴趣,因为他们可能找到了解决相同问题或处于完全不同环境下的其他解决方案。

使用 OpenAPI 消除技术壁垒 新成员 apiplatform.io

作者 公告, 博客

OpenAPI Initiative 欢迎 apiplatform.io,这是一个生产力管理平台,允许用户无需代码即可构建和管理后端应用程序。使用 apiplatform.io,用户可以创建和托管功能齐全的工作流程和 API,以将传统数据库迁移到云中。

apiplatform 拥有广泛的客户群,包括 Lamico Systems 和 Site Lantern。

apiplatform 允许用户快速从想法到产品。得益于其全自动但高度可配置的模型,数据库可以根据 OpenAPI 规范 (OAS) 高效迁移。通过允许用户快速现代化数据库,apiplatform 降低了用户成本,而不会牺牲质量。

我们与联合创始人兼首席执行官 Muthu Raju 坐在一起,进一步了解 apiplatform 目前正在进行的工作以及他们加入 OpenAPI Initiative 的原因。

为什么您要加入 OpenAPI Initiative,以及为什么选择现在加入?

在 apiplatform.io,我们自动化 API 开发周期中的所有步骤,以便我们的用户能够快速实现集成和数字化转型。我们根据作为输入提供给我们平台的 API 规范,自动执行 API 生成和部署。

OpenAPI Initiative 专注于创建和推广供应商中立的描述格式。因此,我们认为 OpenAPI Initiative 是在协作并最终确定用于在我们的平台中构建业务逻辑、工作流程和持续自动化的描述格式的正确场所。

在您的使命宣言中,您谈到了消除技术壁垒。您是如何做到这一点的?

我们通过为给定 API 规范生成代码、测试和部署到云平台以及设置用于安全访问控制的网关来自动化给定 API 规范的开发人员生命周期流程。因此,最终用户无需了解如何使用工具、平台、服务和技术来实现其 API,也不需要将时间投入编码、设置持续交付管道等。一个人可以从给定规范的设计到 API 的交付!

apiplatform.io 开发了 Covid19 虚拟助手,帮助人们查找和使用 COVID-19 数据。它如何工作,以及如何访问它?

https://covid19.apiplatform.io/ 是在 2020 年初通过整合系统科学与工程中心 (CSSE) 和约翰霍普金斯大学 (JHU) 的 COVID-19 仪表板以及一个名为“GOVID”的虚拟助手开发和部署的,以帮助正在寻找食物、药物、在线咨询等的人们。这种虚拟助手一直帮助着人们,直到印度政府在疫情期间授权少数几家私人和政府机构来托管此类服务。

对于 apiplatform.io,新的 OpenAPI 规范 3.1.0 有什么重要意义?更广泛的采用面临哪些挑战?

OpenAPI 规范,无论是 3.1.0 还是任何其他版本,都将是 apiplatform.io 支持的主要规范,这意味着我们根据该规范自动执行 API 的开发生命周期。因此,我们没有预见到任何挑战,因为更广泛的采用。

OpenAPI 资源

要详细了解参与 OpenAPI 规范的演变,请访问:https://www.openapis.org.cn/participate/how-to-contribute

关于 OpenAPI Initiative

OpenAPI Initiative (OAI) 由一群面向未来的行业专家创建,他们认识到对 API 描述进行标准化的巨大价值。作为 Linux 基金会下属的一个开放治理结构,OAI 专注于创建、发展和推广一种供应商中立的描述格式。OpenAPI 规范最初基于由 SmartBear Software 捐赠的 Swagger 规范。要参与 OpenAPI Initiative,请访问 https://www.openapis.org.cn

关于 Linux 基金会

Linux 基金会成立于 2000 年,拥有 1000 多名成员支持,是全球领先的开源软件、开放标准、开放数据和开放硬件协作平台。Linux 基金会项目(如 Linux、Kubernetes、Node.js 等)被认为对全球最重要的基础设施发展至关重要。其开发方法利用了成熟的最佳实践,并满足了贡献者、用户和解决方案提供商的需求,从而为开放协作创建可持续的模式。有关更多信息,请访问 linuxfoundation.org。

API 开发现状以及即将到来的 ASC 2021 – 与 Mandy Whaley,Azure Dev Tools,微软的近距离接触

作者 博客, 活动

ASC 2021 将于今年 9 月 28 日至 29 日在线举行,届时将有众多 API 专家、用户和爱好者参与。OpenAPI 规范 (OAS)、RAML、Blueprint、gRPC、OData、JSON Schema、GraphQL 和 AsynchAPI 将成为 ASC 2021 的主题,使与会者能够熟悉这些格式并讨论如何在实践中使用它们。

该活动起源于 API 策略与实践大会 (APIStrat),该大会举办多年,并于 2016 年成为 OpenAPI Initiative 的一部分。APIStrat 的协作精神和社区精神将继续在 ASC 中体现,我们期待今年能进行许多热烈的对话和辩论!

为了了解更多关于 ASC 2021 的信息,我们与 Mandy Whaley 进行了交谈,她是微软 Azure 开发者工具的产品合作伙伴总监。Whaley 是一位终身软件开发人员,曾在各种规模和类型的开发团队中工作。她在微软领导的团队构建了微软 Azure SDK、用于 Visual Studio 和 VS Code 的 Azure 开发工具,并与公司内部的各个团队合作进行 API 设计和开发者体验。Whaley 将是 ASC 2021 的主题演讲者,她也是每年参加 ASC 的技术娴熟、经验丰富且最重要的是平易近人的人的典范。

2021 年 API 开发面临的最大问题是什么?

目前最大的挑战是开发速度需求与设计和构建一致、易于使用且持久稳定 API 的需求之间的矛盾。这是一个平衡问题。

当然,这不是一个新问题,但 API 现在比以往任何时候都存在于更多的层级和更多的地方。这意味着有更多团队参与,并且存在更多依赖关系。以结果为导向、以客户为中心的 API 设计,辅以帮助团队了解开发人员实际使用 API 的工具至关重要。

许多 API 开发团队也面临着与规模、限流、安全性和长时间运行操作相关的挑战。这些都是 API 社区有机会定义模式和实践的领域,这些模式和实践将帮助 API 生产者和消费者。

API 开发在一年后、三年后将有何不同?

API 正在成为每个团队构建软件的核心部分。随着更多团队采用微服务以及更多公司依赖内部和公共 API 来完成业务的核心部分,我们看到了这种趋势。我们构建的 API 类型也在发生变化,团队需要了解如何将他们的 API 指南和设计实践扩展到 REST 以外。在未来三年中,API 开发将在安全、工具、测试、设计和可观察性等所有方面都将成熟。我很高兴成为社区的一部分,致力于创建这些新功能。

API 技能对加入微软的 Dev Tools 团队有多重要?
我们的团队致力于微软开发人员部门的广泛开发者体验主题。我们构建 VS Code 和 Visual Studio 扩展以及 Azure SDK。我们还领导 Azure API 指南和体系结构审查。我们与团队合作进行 REST API 设计,以及针对 Python、JavaScript、Java、Go 和 .NET 的特定语言的 API。API 技能对于我们的产品管理和工程团队成员都非常重要,因为每个团队成员都需要能够思考 API 或 SDK 细节将如何影响开发者体验。我们寻找 API 技能来招聘高级职位,并且指导团队成员帮助他们提高 API 技能。

您个人希望从在 ASC 2021 上发言中获得什么?

由从业人员主导的会议是我最喜欢的活动类型。我期待着与其他深入思考 API 并致力于设计、构建和维护 API 的所有可能性和挑战的人建立联系。我从 API 社区学到了很多东西,我很高兴通过帮助建立一个社区来回馈,在这个社区中,我们都可以互相学习。

除了演讲之外,您是否想参加 ASC 2021 上的某个特定演讲?
我渴望参加整个活动,并且正在预留时间,以便我可以像参加线下活动一样专注地参加——只是多了一个好处,我可以和我的狗一起在家里吃我最喜欢的零食。

以下仅列出了一些让我感到非常兴奋的环节:


OpenAPI 资源

要详细了解参与 OpenAPI 规范的演变,请访问:https://www.openapis.org.cn/participate/how-to-contribute

关于 OpenAPI Initiative

OpenAPI Initiative (OAI) 由一群具有前瞻性的行业专家创建,他们认识到标准化 API 描述方式的巨大价值。作为 Linux 基金会下的一个开放治理结构,OAI 专注于创建、发展和推广供应商中立的描述格式。OpenAPI 规范最初基于 Swagger 规范,由 SmartBear Software 捐赠。要参与 OpenAPI Initiative,请访问 https://www.openapis.org.cn

关于 Linux 基金会

Linux 基金会成立于 2000 年,拥有 1000 多名成员支持,是全球领先的开源软件、开放标准、开放数据和开放硬件协作平台。Linux 基金会项目(如 Linux、Kubernetes、Node.js 等)被认为对全球最重要的基础设施发展至关重要。其开发方法利用了成熟的最佳实践,并满足了贡献者、用户和解决方案提供商的需求,从而为开放协作创建可持续的模式。有关更多信息,请访问 linuxfoundation.org。

JSON Schema 捆绑终于正式化

作者 博客

本文最初发布在 JSON Schema 博客上,其规范位置为 https://json-schema.org/blog/posts/bundling-json-schema-compound-documents

我知道有人说过“如果你最近没有重写你的 OpenAPI 捆绑实现,那么你就不支持 OpenAPI 3.1”。这种说法可能没错,但也许需要更详细地说明?在 oas-kit 中实现对 OAS 3.1 和 JSON Schema 草案 2020-12 的支持时,阅读 JSON Schema 规范中关于捆绑复合文档的部分时,我仍然不太清楚对符合规范的工具的期望。值得庆幸的是,Ben Hutton 在这里用一个实际示例来澄清事实。 – Mike Ralphson,OAI TSC

捆绑变得越来越重要

OpenAPI 很早就将聚光灯对准了 JSON Schema,而 OpenAPI 3.1 的发布对这两个项目的未来都具有重大意义。我真的很兴奋。

使用 OpenAPI 的平台和库的开发者以前从未经历过这样的震动,我的感觉是,可能需要不止几个版本才能正确实现全面的 JSON Schema 所提供的所有新功能。

虽然从 JSON Schema 草案-04 到草案 2020-12 的变化非常多,而且有更多博客文章比可能有趣的话题还要多,但草案 2020-12 的关键“功能”之一是定义的捆绑过程。(草案-04 是 JSON Schema 的版本,OAS 在 3.1.0 版本之前使用;或者更确切地说,它是 JSON Schema 的子集/超集。)

事实上,捆绑,如果有什么不同的话,将比以往任何时候都更重要。OAS 3.1 引入对全面 JSON Schema 的支持,极大地增加了使用现有 JSON Schema 文档的开发人员使用它们作为参考在新的和更新的 OpenAPI 定义中使用它们可能性。最终的真实来源很重要,通常是 JSON Schema。

许多工具不支持引用外部资源。捆绑是一种便捷的方式,可以将分散在多个文件中的架构资源打包到一个文件中,以便在其他地方使用,例如 OpenAPI 文档。

现有的解决方案?新的解决方案!

有几个库提供捆绑解决方案,但它们都有局限性,到目前为止,我还没有看到任何完全支持 JSON 架构的库。其中最受欢迎的库叫做 json-schema-ref-parser,但是它 报告 说它并非旨在支持 JSON 架构,而只是为了覆盖 JSON 引用规范(现在已被捆绑回 JSON 架构规范)。

我们希望为您提供一个规范的实现(对吧,迈克?!)以及足够的信息,让您能够用您选择的语言开始构建自己的实现。(虽然,在开发实现时始终最好阅读完整规范。)

捆绑基础

首先,让我们看看 JSON 架构草案 2020-12 中的一些关键定义。 $id  关键字用于标识“架构资源”。在下面的示例中,$id 为 https://jsonschema.dev/schemas/mixins/integer  ,用于该资源。

{
  "$id": "https://jsonschema.dev/schemas/mixins/integer",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "description": "Must be an integer",
  "type": "integer"
}

“复合架构文档”是一个 JSON 文档,它包含多个嵌入式 JSON 架构资源。下面是一个简化的示例,我们将在稍后进行解析。

{
  "$id": "https://jsonschema.dev/schemas/examples/non-negative-integer-bundle",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "description": "Must be a non-negative integer",
  "$comment": "A JSON Schema Compound Document. Aka a bundled schema.",
  "$defs": {
    "https://jsonschema.dev/schemas/mixins/integer": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://jsonschema.dev/schemas/mixins/integer",
      "description": "Must be an integer",
      "type": "integer"
    },
    "https://jsonschema.dev/schemas/mixins/non-negative": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://jsonschema.dev/schemas/mixins/non-negative",
      "description": "Not allowed to be negative",
      "minimum": 0
    },
    "nonNegativeInteger": {
      "allOf": [
        {
          "$ref": "/schemas/mixins/integer"
        },
        {
          "$ref": "/schemas/mixins/non-negative"
        }
      ]
    }
  },
  "$ref": "#/$defs/nonNegativeInteger"
}

最后,让我们看看根据 JSON 架构规范精心制作的“捆绑”定义。

“用于创建复合架构文档的捆绑过程被定义为将对外部架构资源的引用(例如“$ref”)嵌入到引用文档中。捆绑 SHOULD 以一种方式完成,即基本文档中以及任何被引用/嵌入的文档中使用的所有 URI(用于引用)不需要更改。”

有了这些定义,我们现在就可以看看为 JSON 架构资源定义的捆绑过程!我们只会在本文中介绍理想情况。这里的目标是没有任何外部架构资源。

请注意,本文不涵盖“完全反引用”,即从架构中删除所有 $ref 的用法。不建议这样做,而且并非总是可行的,例如,当存在自引用时。

捆绑简单外部资源

在我们的第一个示例中,我们有一个理想的捆绑情况。每个架构都定义了 $id 和 $schema,使得捆绑过程变得很简单。我们将涵盖各种其他情况和边缘案例,但在后续示例中,让每个资源定义自己的标识和方言始终是可取的。我们的主要架构资源使用 $ref 原地应用器引用了其他两个架构资源,其值为相对 URI。相对 URI 相对于基 URI 解析,在本文中,基 URI 在主要架构资源的 $id 值中找到。通过组合“整数”和“非负数”架构,我们创建了一个“非负整数”架构。

{
  "$id": "https://jsonschema.dev/schemas/mixins/integer",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "description": "Must be an integer",
  "type": "integer"
}
{
  "$id": "https://jsonschema.dev/schemas/mixins/non-negative",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "description": "Not allowed to be negative",
  "minimum": 0
}
{
  "$id": "https://jsonschema.dev/schemas/examples/non-negative-integer",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "description": "Must be a non-negative integer",
  "$comment": "A JSON Schema that uses multiple external references",
  "$defs": {
    "nonNegativeInteger": {
      "allOf": [
        {
          "$ref": "/schemas/mixins/integer"
        },
        {
          "$ref": "/schemas/mixins/non-negative"
        }
      ]
    }
  },
  "$ref": "#/$defs/nonNegativeInteger"
}

如果“非负整数”架构在实现中用作主要架构,则其他架构需要对实现可用。在这一点上,实现加载架构的方式并不重要,因为它们在 $id 中定义了完全限定的 URI 作为其标识。任何加载架构的实现都应该构建一个架构 URI 在 $id 中定义的架构资源的内部本地索引。

请记住,任何为 $id 提供值的架构都被视为架构资源。

让我们解析(反引用)主要架构中的一个引用。 “$ref”: “/schemas/mixins/integer” 通过遵循首先确定基 URI,然后将相对 URI 相对于该基 URI 解析的规则,解析为完全限定的 URI https://jsonschema.dev/schemas/mixins/integer 。然后,实现应该检查其架构标识符和架构资源的内部索引,找到匹配项,并使用相应的先前加载的架构资源。

捆绑过程已完成。先前被外部引用的架构被原封不动地复制到主要架构中的 $defs 中。 $defs 对象的键是标识 URI,但它们可以是任何东西,因为这些值不会被引用(如果需要,它们可以是 UUID)。看一下我们最终捆绑的架构……我的意思是“复合架构文档”,现在我们在单个架构文档中嵌入了多个架构资源。

{
  "$id": "https://jsonschema.dev/schemas/examples/non-negative-integer-bundle",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "description": "Must be a non-negative integer",
  "$comment": "A JSON Schema Compound Document. Aka a bundled schema.",
  "$defs": {
    "https://jsonschema.dev/schemas/mixins/integer": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://jsonschema.dev/schemas/mixins/integer",
      "description": "Must be an integer",
      "type": "integer"
    },
    "https://jsonschema.dev/schemas/mixins/non-negative": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://jsonschema.dev/schemas/mixins/non-negative",
      "description": "Not allowed to be negative",
      "minimum": 0
    },
    "nonNegativeInteger": {
      "allOf": [
        {
          "$ref": "/schemas/mixins/integer"
        },
        {
          "$ref": "/schemas/mixins/non-negative"
        }
      ]
    }
  },
  "$ref": "#/$defs/nonNegativeInteger"
}

当捆绑的架构最初加载和评估时,实现应该像以前一样创建自己的架构标识符和架构资源的内部索引。用于引用这些架构资源的相对 URI 不需要更改。

查看此捆绑架构按预期工作的最简单方法是将其粘贴到 https://json-schema.hyperjump.io 中,然后尝试实例的不同值。我希望在接下来的几个月内对 https://jsonschema.dev 进行一些更新,但现在我们正忙于继续将 JSON 架构提升为一个组织。

值得记住的是,本文中的示例展示了理想情况,即在遵循最佳实践的情况下。JSON 架构规范确实定义了针对非理想情况和边缘案例的其他过程(例如,当 $id 或 $schema 未设置时),但是,某些解决方案可能与复合 JSON 架构文档间接相关。例如,建立基 URI 遵循 RFC3986 中规定的步骤,JSON 架构没有重新定义这些步骤。

OpenAPI 规范示例

让我们看看这如何在 OpenAPI 定义中工作。

openapi: 3.1.0
info:
  title: API
  version: 1.0.0
components:
  schemas:
    non-negative-integer:
      $ref: 'https://jsonschema.dev/schemas/examples/non-negative-integer'

我们从输入的 OpenAPI 3.1.0 规范文档开始。为了简洁起见,我们只展示了包含单个组件的组件部分,但假设文档的其他部分使用了组件架构“非负整数”。

“非负整数”对 JSON 架构资源只有一个引用。引用 URI 是一个绝对 URI,包括域和路径,这意味着不需要进行任何“将相对 URI 相对于基 URI 解析”的操作。

解析和捆绑引用所需的所有架构都提供给了捆绑工具。在将架构加载到实现中后,它们最初的物理位置就不再重要了。

openapi: 3.1.0
info:
  title: API
  version: 1.0.0
components:
  schemas:
    # This name has not changed, or been replaced, as it already existed and is likely to be referenced elsewhere
    non-negative-integer:
      # This Reference URI hasn't changed
      $ref: 'https://jsonschema.dev/schemas/examples/non-negative-integer'
    # The path name already existed. This key doesn't really matter. It could be anything. It's just for human readers. It could be an MD5!
    non-negative-integer-2:
      $schema: 'https://json-schema.org/draft/2020-12/schema'
      $id: 'https://jsonschema.dev/schemas/examples/non-negative-integer'
      description: Must be a non-negative integer
      $comment: A JSON Schema that uses multiple external references
      $defs:
        nonNegativeInteger:
          allOf:
          # These references remain unchanged because they rely on the base URI of this schema resource
          - $ref: /schemas/mixins/integer
          - $ref: /schemas/mixins/non-negative
      $ref: '#/$defs/nonNegativeInteger'
    integer:
      $schema: 'https://json-schema.org/draft/2020-12/schema'
      $id: 'https://jsonschema.dev/schemas/mixins/integer'
      description: Must be an integer
      type: integer
    non-negative:
      $schema: 'https://json-schema.org/draft/2020-12/schema'
      $id: 'https://jsonschema.dev/schemas/mixins/non-negative'
      description: Not allowed to be negative
      minimum: 0

架构被插入到 OAS 文档的 components/schemas 位置。在 schemas 对象中使用的键对引用解析没有重要意义,但您需要避免潜在的重复。引用不需要更改,处理生成的捆绑或复合文档的处理器应该在 OAS 文档中查找嵌入式架构资源的使用情况,并跟踪 $id 值。

但是,关于…

你们中敏锐的人可能已经注意到,复合文档可能无法使用文档根目录中定义的方言的元架构进行正确验证。我们的一位主要贡献者提炼了一个很棒的解释,他同意让我们与大家分享。

如果嵌入的架构具有与父架构不同的 $schema ,则复合架构文档无法使用元架构进行验证,除非将其分解为单独的架构资源,并将适当的元架构应用于每个资源。但这并不意味着复合架构文档在没有分解的情况下无法使用,只是意味着实现需要意识到 $schema 在评估期间可能会发生变化,并适当地处理这些变化。” – 杰森·德罗西尔斯。

如果您想更深入地了解边缘案例,请告诉我们。

您可以通过 @jsonschema 或我们的 Slack 服务器联系我们。

我希望您同意,本在这里为我们大家澄清了这个过程,我们可以使用这个例子来完全满足 JSON 架构在编写将多个资源捆绑到复合 OpenAPI 文档中的工具时的捆绑预期。谢谢,本! – 迈克

由 vanitjan 创建的商业照片 – www.freepik.com