跳至主要内容
类别

博客

今年的 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 工作”Postman/JSON Schema 的 Ben Hutton 的“所以你认为你理解 JSON Schema 吗?”。或者eBay 的 Someshekhar Banerjee 的“AsyncAPI 2.0:开启事件驱动世界”。这些讨论帮助与会者熟悉不同的格式,并学习如何在实践中使用它们。

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

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

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

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

在线活动为我们创造了接触新受众和扩大覆盖范围的机会。对于错过会议或希望再次观看会议的人,主题演讲和会议录音可在我们的 YouTube 频道上观看。演讲者的演示文稿也可在每个演讲的此处下载。

 

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

API 文档中心 ReadMe 加入 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 Recipes)到微小的细节(例如由 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 年,拥有 1,000 多个成员的支持,是世界上领先的开源软件、开放标准、开放数据和开放硬件协作中心。Linux 基金会的项目,如 Linux、Kubernetes、Node.js 等,被认为是世界最重要的基础设施发展至关重要。其开发方法利用既定的最佳实践,并满足贡献者、用户和解决方案提供商的需求,以创建可持续的开放协作模式。欲了解更多信息,请访问 linuxfoundation.org。

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

作者 博客

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

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

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

OAI 已任命 Refael Botbol Weiss(领英/GitHub)为该小组的 POC。请通过 [email protected] 与他联系,以获取有关加入的信息和询问。

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

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

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

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

作者 博客

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

如今的旅行者越来越追求体验,而不仅仅是飞机上的座位或酒店的床位。事实上,旅行体验从预订环境本身开始,消费者期望通过一个单一的门户连接到各个旅行提供商和旅行零售商。人们希望在日常生活中使用的送货和乘车共享应用的便利性和价值能够应用到旅行体验中。

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

创建端到端旅程很困难

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

随着时间的推移,曾经行之有效的解决方案开始显现其局限性。该行业正在进行多项努力,以打破过去的束缚,寻求一种新的方法,即旅行报价的处理方式可能与数字空间中的任何其他零售产品类似。

然而,旅行有一些独特的要求,因为产品是瞬时的(飞机起飞后,空座就毫无价值),而且在大多数情况下,特定于地点(飞机必须降落在机场)。此外,在大多数情况下,旅行产品必须与其他旅行产品组合起来才能满足创建旅行的请求。

创建端到端旅程意味着来自多个提供商提出的和/或服务的多个报价的组合报价。这增加了复杂性,维护报价之间的关系,其他零售类别避免了这种复杂性。

主要要点:将体验作为一种新的旅行零售方法,需要旅行市场参与者之间更高水平的互操作性。

解决互操作性将打开广阔的机会

解决支持基于体验的、全旅程的、大规模零售的问题,可以为当前运营的许多分销渠道带来巨大的经济机会,或者创造新的分销渠道。主流分销渠道主要集中在航空领域,在美国,航空公司的总营业收入为 120[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 今天宣布,Kubeshop.io 已加入成为新成员。OpenAPI Initiative 是一个由面向未来的行业专家组成的联盟,专注于发展和实施 OpenAPI 规范 (OAS)。Kubeshop 的 CTO 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 的 CTO 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 年,拥有 1,000 多个成员的支持,是世界上领先的开源软件、开放标准、开放数据和开放硬件协作中心。Linux 基金会的项目,如 Linux、Kubernetes、Node.js 等,被认为是世界最重要的基础设施发展至关重要。其开发方法利用既定的最佳实践,并满足贡献者、用户和解决方案提供商的需求,以创建可持续的开放协作模式。欲了解更多信息,请访问 linuxfoundation.org。

API 万能手 Arnaud Lauret 介绍了 ASC 2021 的四个必参加会议

作者 博客, 活动

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

Lauret 将在 9 月 28 日星期二太平洋时间下午 11:20 发表题为“利用 OpenAPI 进行 API 设计评审”的演讲。

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

在 ASC 2021 的现场 API 设计评审演示会议中,您将涵盖的三个主要 API 设计原则是什么?

内外结合、语义和一致性。 

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

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

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

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

是的。这并不总是那么容易,但我就是努力做到这一点。基于毫无根据的意见的 API 设计评审毫无意义。人们并不关心你是否更喜欢蓝色而不是橙色。问题是,在给定的情况下,为什么蓝色比橙色更好。所有提出的内容都必须有合理的解释,事实。 

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

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

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

  • 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 的交付!

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

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

新的 OpenAPI 规范 3.1.0 对 apiplatform.io 而言有什么重要性?更广泛采用的挑战是什么?

无论是 3.1.0 还是任何其他版本,OpenAPI 规范都是 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 年,拥有 1,000 多个成员的支持,是世界上领先的开源软件、开放标准、开放数据和开放硬件协作中心。Linux 基金会的项目,如 Linux、Kubernetes、Node.js 等,被认为是世界最重要的基础设施发展至关重要。其开发方法利用既定的最佳实践,并满足贡献者、用户和解决方案提供商的需求,以创建可持续的开放协作模式。欲了解更多信息,请访问 linuxfoundation.org。

API 开发现状和即将到来的 ASC 2021 - 与微软 Azure 开发工具的 Mandy Whaley 近距离接触

作者 博客, 活动

ASC 2021 今年将在 9 月 28 日至 29 日以虚拟方式举行,汇集了众多 API 专家、用户和爱好者。OpenAPI 规范 (OAS)、RAML、Blueprint、gRPC、OData、JSON Schema、GraphQL 和 AsynchAPI 都将成为 ASC 2021 的议题,让与会者能够熟悉这些格式并讨论如何在实践中使用它们。

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

为了了解更多关于 ASC 2021 的信息,我们与微软 Azure 开发工具的产品合作伙伴总监 Mandy Whaley 进行了交谈。Whaley 是一位终身软件开发人员,曾在各种规模和类型的开发团队工作过。她在微软领导的团队负责构建 Microsoft 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 类型也在发生变化,团队需要了解如何在 REST 以外扩展其 API 指南和设计实践。在未来三年,API 开发将在安全性、工具、测试、设计和可观察性等所有方面走向成熟。我很高兴成为这个社区中的一部分,共同创造这些新功能。

API 技能对于进入微软的开发工具团队有多重要?
我们的团队致力于微软开发者部门的广泛的开发人员体验主题。我们构建 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 年,拥有 1,000 多个成员的支持,是世界上领先的开源软件、开放标准、开放数据和开放硬件协作中心。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 是 OAS 在 3.1.0 版本之前使用的 JSON Schema 版本;或者说是它的子集/超集。)

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

许多工具不支持引用外部资源。捆绑是一种将跨多个文件分布的 schema 资源打包到单个文件中供其他地方使用(例如 OpenAPI 文档)的便捷方式。

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

有一些库提供了捆绑解决方案,但它们都有局限性,而且我目前还没有看到任何完全了解 JSON Schema 的库。这些库中最受欢迎的是 json-schema-ref-parser,但它报告称它不是为了了解 JSON Schema 而设计的,只是为了涵盖 JSON Reference 规范(现在已经捆绑回 JSON Schema 规范)。

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

捆绑基础

首先,让我们了解 JSON Schema 草案 2020-12 中的一些关键定义。$id 关键字用于标识“schema 资源”。在下面的示例中,$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"
}

“复合 Schema 文档”是一个 JSON 文档,其中包含多个嵌入式 JSON Schema 资源。下面是一个简化的示例,我们稍后将对其进行分解。

{
  "$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 Schema 规范仔细研究一下“捆绑”的定义。

“创建复合 Schema 文档的捆绑过程被定义为获取对外部 Schema 资源的引用(例如“$ref”),并将引用的 Schema 资源嵌入到引用文档中。捆绑应该以这样的方式完成,即基文档和任何引用/嵌入文档中使用的所有 URI(用于引用)不需要修改。”

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

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

捆绑简单外部资源

在我们的第一个示例中,我们有一个捆绑的理想情况。每个模式都有一个 $id 和 $schema 定义,使捆绑过程变得简单。我们将在后面的示例中介绍各种其他情况和边缘情况,但始终建议每个资源定义自己的标识和方言。我们的主要模式资源使用就地应用器 $ref 引用了两个其他模式资源,其值为相对 URI。相对 URI 是相对于基 URI 解析的,在本例中,基 URI 在主要模式资源的 $id 值中找到。通过组合“integer”和“non-negative”模式,我们创建了一个“non-negative integer”模式。

{
  "$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"
}

如果“non-negative-integer”模式用作实现中的主要模式,则其他模式需要对实现可用。此时,该实现如何加载模式并不重要,因为它们在 $id 中定义了完全限定的 URI 作为其标识。任何加载模式的实现都应该构建一个内部本地索引,其中包含 $id 中定义的模式 URI 和模式资源。

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

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

捆绑过程已完成。先前外部引用的模式按原样复制到我们主要模式中的 $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 Schema 提升为一个组织,现在时间非常紧张。

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

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 规范文档开始。为了简洁起见,我们只显示了包含单个组件的 components 部分,但假设文档的其他部分使用了组件模式“non-negative-integer”。

“non-negative-integer” 对 JSON Schema 资源有一个引用。引用 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 在评估期间可能会发生变化,并相应地处理这些变化。” - Jason Desrosiers。

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

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

我希望您同意,本在这里为我们所有人澄清了这个过程,我们可以使用这个例子来完全满足 JSON Schema 在编写将多个资源捆绑到复合 OpenAPI 文档的工具时的捆绑期望。谢谢,本! - Mike

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

APIAddicts 加入 OpenAPI Initiative

By Announcement, Blog

欢迎来到 APIAddicts!APIAddicts 拥有最大的 API 从业者社区之一,在西班牙语国家(包括西班牙、秘鲁和墨西哥)拥有广泛的国际影响力,在全球拥有 5,000 多名 APIAddicts,以及超过一百万次的可视化。

APIAddicts 每年举办多次活动,供希望讨论、了解更多信息并为 API 的增长和集成做出贡献的开发人员参加。以下是采访中提供的一些详细信息。APIAddicts Days 是他们每年举办的最重要的活动之一。公司和专业人士分享他们的经验,同时分析当前支持 API 的框架中的成功和失败之处。要了解 2020 年 APIAddicts Days 的情况,请点击 这里

APIAddicts 非常注重教育。他们的 API 学校旨在帮助专业人士提高他们对 API 的使用。在课程结束时,您将获得 API 布道者证书/认可/文凭

我们想更多地了解他们即将举行的活动以及 API 领域的最新更新,以及与 OpenAPI Initiative 合作将是什么样子。我们与 Marco Antonio Sanz(APIAddicts 的创始人)进行了交谈,以了解更多信息!

APIAddicts 是如何诞生的?

2013 年,五位技术娴熟的朋友和同事在大型公司工作,管理着 API,并意识到当时西班牙语 API 文档和教育的缺乏。

因此,他们开始进行一系列非正式的演讲,以分享他们的知识。成立了至今仍在活跃的 Meetup 小组,以与对数字化转型感兴趣的其他人士建立联系,我们开始每月聚会讨论行业新闻或更新,事实上,第一次聚会是在 Getafe 的酒吧,直到后来才逐渐正式化。

这项工作不断发展,最终形成了今天的 APIAddicts,这是西班牙语国家最大的 API 社区,在西班牙、智利、秘鲁、墨西哥、哥伦比亚和阿根廷拥有超过 5,000 名 APIAddicts。

获得 API 布道者文凭有多难?主要好处是什么?

API 的布道和专业人员的培训非常重要,因此,基金会希望更进一步,帮助公司利用最新的知识和来自最佳专家的知识来提升团队资格。

我们已经开展 API 所有者课程多年,现在这个课程非常受欢迎,我们决定用安全、测试、设计和架构的专业化课程来完成培训。这样,您可以全面了解公司的 API 化过程,并学习如何优化地管理每个阶段。

所有课程都涉及总共 50 小时的培训,其中 80% 是动手实践,学生可以在其中应用他们学到的知识。课程结束后,他们将向老师展示一个 API 项目,老师会评估和评估文档。

如果他们在考虑课程要求和概念的情况下完成了 API 项目,他们将获得每个专业的证书和 API 布道者文凭,这是 API 专业人员的最高认证。

如今,许多公司信任基金会 API 学校的课程,并通过这些课程专门培训其团队,包括项目经理、质量保证人员、技术主管、分析师、协调员等等。参加这些课程可以保证您了解整个 API 化过程,并清楚地管理必要的工具。这不仅可以提升您的工作前景,还可以提升您在公司中的职业生涯。

APIAddicts 在 API 布道方面有哪些使命?

我们一直意识到,尽管 API 是当今希望具有竞争力的公司的关键因素,但它是一个会造成很多混淆的术语。因此,我们可以说,APIAddicts 基金会的布道使命始于 2013 年,当时 API 已经开始使用,但没有人完全了解 API 的用途。事实上,我们社区的作用对于在西班牙介绍 API 的变革潜力至关重要。

从这个意义上说,我们开展年度研究、开源工具、培训课程、3 个大型活动:网络剧、初创公司和 API 以及 APIAddicts Days,以及 20 多个年度聚会。我们是创建西班牙语 API 文档最多的社区,现在我们希望继续用 OpenAPI 做到这一点。

我们相信,如果我们必须定义我们的主要差异,那就是我们总是尝试让行业中最优秀的专家参与,激发人们对 API 的使用,而且始终从亲密的关系出发,真正成为一个社区。这就是为什么例如我们所有的 API 学校课程都不录制,因为对我们来说,这会导致您错过 API 培训中必不可少的一部分:与现场专家分享经验和真实案例。

最后,我们每天都在继续做我们创立之初的目标:以颠覆性的方式将 API 的知识带到世界每一个西班牙语角落。

APIAddicts 与 CloudAPPI 之间的关系是什么?

在通过演讲和聚会开始 API 布道之后,社区越来越受欢迎,随之而来的是商业机会。这成为一个转折点,他们决定辞去原来的工作,成立自己的咨询公司,脱离协会的基地,因为一方面是基金会,另一方面是公司,但他们可以作为合作伙伴相互陪伴成长,从不同的角度来处理 API 的生命周期。

因此,今天两个实体之间的关系基于赞助,因此他们积极参与不同的活动。然而,基金会通过其他赞助商、API学校课程和一些活动门票的价格获得了自有预算的支持。

我们一直都很清楚,基金会是由一群热爱 API 的技术爱好者出于利他主义而创办的,旨在推广西班牙语的 API 知识,并将始终保持这一目标。

为什么 APIAddicts 加入 OpenAPI Initiative 以及为什么现在加入?

在过去几年中,我们一直在努力以各种形式推动 API 传教工作:开源工具、国际活动、新的广播形式(如播客)、专业课程…… 在所有这些工作中,我们看到了成为一个开发社区的必要性,该社区对于 API 的未来至关重要,就像 OpenAPI Initiative 一样。

这样我们就可以为我们的社区提供更多价值,并在 API 的未来发挥更大的作用。我们希望帮助改进规范,从而提高允许实施 API First 方法的工具(如 API 工具)的水平。


我们很高兴听到 APIAddicts 团队的消息,并了解到他们正在做的出色工作。我们感谢他们在社区建设和表达 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 年,拥有 1,000 多个成员的支持,是世界上领先的开源软件、开放标准、开放数据和开放硬件协作中心。Linux 基金会的项目,如 Linux、Kubernetes、Node.js 等,被认为是世界最重要的基础设施发展至关重要。其开发方法利用既定的最佳实践,并满足贡献者、用户和解决方案提供商的需求,以创建可持续的开放协作模式。欲了解更多信息,请访问 linuxfoundation.org。