跳至主要内容
类别

博客

Open API Initiative,九个月过去了 – OAI 聚会 2016-09-15

作者: 博客

在 9 月 15 日的 OAI 聚会上,IBM 的 Jeff Borek 带领大家回顾了 Open API Initiative 在过去 9 个月中的历程。从简要概述 Open API Initiative 开始,介绍了其所基于的 Swagger 项目的一些背景信息,最后介绍了如今有多少公司正在合作实现 OAS 3.0 规范的开放治理——预计该规范将于今年晚些时候完成。

Jeff Borek关于作者
Jeff Borek
Jeff Borek(IBM 全球开放技术与合作伙伴关系项目总监)是一位资深的技术和通信高管,在软件、电信和信息技术/咨询行业拥有超过 20 年的领导力和技术经验。他目前是开放技术与合作伙伴关系团队的业务开发负责人——与客户、业务合作伙伴、领先的行业分析师以及各种开源社区计划合作,包括:Linux 基金会、OpenStack 云软件项目和 Cloud Foundry 基金会。他还代表 IBM 担任 Docker 治理咨询委员会的现任主席,但对我们来说最重要的是,他还是 Open API Initiative 的董事会成员。您可以在 Twitter 上关注他。

Google 中的 OpenAPI 规范 – OAI 聚会 2016-09-15

作者: 博客

在 2010 年 OpenAPI 规范的前身——Swagger 规范创建之前,Google 已经发布了 150 个公共 API,这些 API 被数十万开发人员使用,并且每天处理数十亿次调用……

在 2016 年 9 月的 OAI 聚会上,Dan Ciruli 讨论了为什么在产品事后分析中,API 团队最终转向开源解决方案并最终加入 Open API Initiative。

在了解了他们加入的原因后,听听他们在做什么。9 月 1 日,Google 宣布了 Google Cloud Endpoints 中最新功能集和开源组件的公开测试版发布。了解 Google 为什么致力于利用 OpenAPI 规范 以及他们下一步的计划。

Dan 演讲的幻灯片可在 此处 找到:


Dan Ciruli关于作者
Dan Ciruli
Dan Ciruli 是 Google 的产品经理,负责 API 基础设施。当他还有膝盖的时候,他过去经常玩终极飞盘;当他有时间的时候,他写了很多软件。如果你给他机会,他会尝试用西班牙语和你说话。您可以在 Twitter 上找到他:@danciruli

使用 Capital One 纵览 OpenAPI – OAI 聚会 2016-09-15

作者: 博客

在您的 API 堆栈中进行静态定义的处理已经过时了。了解 Capital One 如何使用 OpenAPI 规范来实现更灵活和开放的 API 开发。

跟随 Capital One 开发人员 Leonhardt de Waal 一起纵览 OpenAPI 规范。

注意:由于技术问题,更确切地说,是项目经理的问题,但这一次我们会原谅他,演示文稿被切断了,分成了两部分。对于由此造成的不便,我们深感抱歉。

第 1 部分

第 2 部分

 


关于作者
Leonhardt de Waal
Leonhardt 是 Capital One 的软件工程师。

Open API Initiative:六个月过去了(录制)

作者: 博客

观看 IBM developerWorks Open 的录制视频,其中 OAI 董事会成员 Jeff Borek(@jeffborek)主持了与 OAI 成员 Capital One 的 Dennis Brennan(@dennis_brennan)、Apigee 的 Marsh Gardiner(@earth2marsh)和 SmartBear Software 的 Tony Tam(@fehguy)以及 StrongLoop 的 Raymond Feng(@cyberfeng)的讨论。

 Six months and counting

 

链接

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

作者: 博客

OpenAPI 规范是如何发展的?流程是什么?您如何参与?今天,我们将尝试回答这些问题,并阐明

  • 技术开发者社区,其存在原因以及运营方式
  • OpenAPI 规范下一次主要修订版的时间表和路线图

Open API Logo

去年 12 月,Swagger 2.0 规范由 SmartBear 捐赠,并成为 OpenAPI 规范(有时缩写为 OAS)。该规范 100% 兼容,只是名称和品牌有所改变。为什么这很重要?在某些方面,它并不重要——之前并没有什么“问题”。但是,为了让有时存在竞争关系的供应商能够在其产品中构建对该格式的支持,并能够就行业标准进行协作,他们需要一个中立的治理模型。这正是 Open API Initiative 在 Linux 基金会下创建的原因,目的是发展以前称为 Swagger 规范的内容。

_meta_issue_specification_documentation_structure_and_supporting_docs_issue_589_oai_openapi-specificationOpen API Initiative 的章程创建了“一个开源的技术开发者社区 (TDC),对任何参与者开放,无论其是否为 OAI 成员。 ” TDC 负责监督 OpenAPI 规范的演变。如今,TDC 有六名成员,并且随着社区成员积极推动该格式的发展,其规模将随着时间推移而扩大。好消息是,自从 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。有时进行一个小时的电话会议会更快,我们每隔几周就会进行一次。此外,当 GitHub 通知无法完成工作时,我们使用 OAI 的 Slack 团队来引起人们对问题或建议的关注。元问题中的子问题提出的更改会导致拉取请求 (PR),然后通过在问题上使用反应来对该 PR 进行投票。

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

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

 


Marsh Gardiner关于作者

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

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

Gluecon 总结:首次参加者体验的炒作

作者: 博客

去年,我错过了 Gluecon,感到很失望。我的同事对它评价很高——内容丰富、最先进且非常非商业化。我很高兴今年它与我的日程安排相符,而且我绝对没有失望。Eric Norlin (@defrag) 做了出色的工作,确保他的演讲者种类繁多,但有一点共同点:质量极高。

我感到兴奋的另一个原因是,这是我自开放 API 倡议成立和开放 API 规范更名以来参加的第一个活动,我认为它会引起一些关注。但是,我不知道它会引起多少关注。

在 API 环节中,没有一个演讲不提及(或者,在某些情况下……多次提及)开放 API(嗯……不止一次演讲者脱口而出“Swagger 规范”)。

当然,最令人兴奋的不是更名。每个演讲者如此频繁地提及它的原因是,它提供了一种通用语言,一个我们可以共同参考的讨论 API 的切入点。发起该倡议的目标是让行业能够超越关于哪种格式更好以及为什么更好的讨论——这样我们就可以专注于当我们都同意使用一种通用语言时可能的工具链和生态系统。

API 环节很棒。James Higginbotham来自 LaunchAny,他谈到了领域驱动设计以及 API 定义中抽象的重要性。Emmanuel Paraskakis来自 Apiary.io,Tony Tam 来自 SmartBear(以及 Swagger 项目)和 Ray Camden 来自StrongLoop都谈到了如何提高 API 开发工作流程的速度和规模。Guillaume LaForge 来自 Restlet,他在 API 环节的最后发表了关于“五面棱镜极化 Web API 开发”的演讲。(!)

如果第一天五场 API 环节还不够,第二天还有不少于八场与 API 相关的环节。对我来说,最棒的时刻之一是 Mark Stafford 关于他的 Model First 项目的演讲——一个用于 OpenAPI 规范组合的框架,有助于强制执行一致性和简化开发(运行此处,代码此处)。

但会议的 API 重头戏必须是 IBM 的 Stewart Nickolas 关于“对话式计算”的演讲。他的演讲几乎完全是通过与 Watson 的语音交互完成的……包括询问 Watson 有关 API 的信息、让 Watson 描述开放 API 规范,然后让 Stewart 口头告诉 Watson 调用 API。

不知何故,我怀疑开发人员将来不会用语音进行太多 API 的内省。但它仍然是一个非常强大的演示,尤其是在我考虑到整个演示都是由……API 提供支持时。


Dan Ciruli关于作者
Dan Ciruli
Dan Ciruli 是 Google 的产品经理,负责 API 基础设施。当他还有膝盖的时候,他过去经常玩终极飞盘;当他有时间的时候,他写了很多软件。如果你给他机会,他会尝试用西班牙语和你说话。您可以在 Twitter 上找到他:@danciruli

Gluecon 入场券赠送!

作者: 博客

Gluecon 即将到来,开放 API 倡议正在赠送一张免费入场券。要获得资格

  1. 找到任何引用Swagger Specification*而不是OpenAPI的开源项目,无论是在文档中还是在代码库本身中。
  2. 更新这些引用以反映新名称OpenAPI(请参阅此处的示例此处)。
  3. 如果您已经是合作者,请推送您的更改。如果您已为该项目创建分支,请提交包含您的更改的拉取请求。
  4. 在 Twitter 上向 @OpenApiSpec 发布您作品(提交或 PR)的链接,以及您的 GitHub ID。

OAI Gluecon 团队将选出一位获胜者!参加 Gluecon 从未如此简单。

*注意:这仅适用于引用 Swagger Specification 的规范。有关名称更改的历史记录,请单击此处

详情:赠送活动仅限于 Gluecon 入场券,参加者需自行承担差旅和住宿费用。

 


Marsh Gardiner关于作者

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

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

gRPC 与 REST 和 OpenAPI 规范

作者: 博客

我们今天的客座文章来自 CoreOS 的 Brandon Phillips。CoreOS 为 Linux 容器构建开源项目和产品。他们用于共识和发现的旗舰产品(etcd)和他们的容器引擎rktgRPC的早期采用者,gRPC 是一个基于 protobufs 和 HTTP/2 的 RPC 框架,可以使构建和使用 API 更轻松且性能更高。由于许多客户端都使用 http/1.1 加 JSON,因此与 JSON 和开放 API 的互操作性非常重要。对于更习惯于基于 HTTP/1.1+JSON 的 API 和开放 API 倡议规范(以前是 swagger)API 的用户,他们正在结合使用开源库来以这种形式提供他们的 gRPC 服务。他们构建了 API 多路复用器,以便用户能够同时获得两者的优势。让我们深入了解细节,并了解他们是如何做到的!

这篇文章最初发表在 CoreOS 博客上(链接)。我们在此重新发布,并进行了一些编辑。

 

CoreOS 选择 gRPC 的主要原因之一是它使用 HTTP/2,使应用程序能够在单个 TCP 端口上同时提供 HTTP 1.1 REST+JSON API 和高效的 gRPC 接口。(适用于 Go)这使开发人员能够与 REST Web 生态系统兼容,同时推进一种新的、高效的 RPC 协议。随着最近发布的 Go 1.6,Go 默认附带了稳定的 net/http2 包。

一个名为 EchoService 的 gRPC 应用程序

在这篇文章中,我们将从 gRPC API 定义构建一个小型概念验证 gRPC 应用程序,添加一个 REST 服务网关,最后将所有内容都服务于单个 TLS 端口。该应用程序称为 EchoService,相当于 shell 命令 echo 的 Web 版本:该服务返回或“回显”发送给它的任何文本。

首先,让我们在一个名为 EchoMessage 的 protobuf 消息中定义 EchoService 的参数,其中包含一个名为 value 的字段。我们将在一个名为 service.proto 的 protobuf “.proto” 文件中定义此消息。这是我们的 EchoMessage

message EchoMessage { string value = 1; }

在同一个 protobuf 文件中,我们定义了一个 gRPC 服务,它接收此数据结构并返回它

service EchoService { rpc Echo(EchoMessage) returns (EchoMessage) { } }

通过 Protocol Buffer 编译器protoc运行此 service.proto 文件将在 Go 中生成一个存根 gRPC 服务,以及各种语言的客户端。但是,仅有 gRPC 并没有像也公开 REST 接口的服务那样有用,因此我们不会止步于 gRPC 服务存根。

接下来,我们添加gRPC REST 网关。此库将在 gRPC EchoService 之上构建一个 RESTful 代理。为了构建此网关,我们在 EchoService proto 中添加元数据,以指示 Echo RPC 映射到一个 RESTful POST 方法,所有 RPC 参数都映射到 JSON 主体。网关可以将 RPC 参数映射到 URL 路径和查询参数,但为了简洁起见,我们在此省略了这些复杂情况。

service EchoService { rpc Echo(EchoMessage) returns (EchoMessage) { option (google.api.http) = { post: “/v1/echo” body: “*” }; } }

从实际角度来看,这意味着网关一旦由 protoc 生成,现在就可以接受来自 curl 的类似以下请求

curl -X POST -k https://localhost:10000/v1/echo -d ‘{“value”: “CoreOS is hiring!”}’

到目前为止,整个系统看起来像这样,一个 service.proto 文件同时生成 gRPC 服务器和 REST 代理

grpc-rest-gateway

带 REST 网关的 gRPC API

为了将所有这些整合在一起,echo 服务创建了一个 Go http.Handler 来检测协议是否为 HTTP/2 以及 Content-Type 是否为“application/grpc”,并将此类请求发送到 gRPC 服务器。其他所有内容都路由到 REST 网关。代码看起来像这样

如果 r.ProtoMajor 等于 2 并且 strings.Contains(r.Header.Get(“Content-Type”), “application/grpc”) 为真,则 grpcServer.ServeHTTP(w, r);否则,otherHandler.ServeHTTP(w, r)。

要尝试一下,您只需要一个 可用的 Go 1.6 开发环境 和以下简单的操作。

$ go get -u github.com/philips/grpc-gateway-example $ grpc-gateway-example serve

服务器运行后,您可以尝试在 HTTP 1.1 和 gRPC 接口上发出请求。

grpc-gateway-example echo 使用 gRPC 从 REST 中获取休息 curl -X POST -k https://localhost:10000/v1/echo -d ‘{“value”: “CoreOS is hiring!”}’

最后一个好处:因为我们有一个 OpenAPI 规范,所以如果您在笔记本电脑上运行了上面的服务器,则可以浏览运行在 https://localhost:10000/swagger-ui/#!/EchoService/Echo 的 OpenAPI UI

Swagger browser screenshot

gRPC/REST OpenAPI 文档

我们已经了解了如何使用 gRPC 桥接到 REST 世界。如果您想查看完整的项目,请查看 GitHub 上的仓库。我们认为这种使用单个 protobuf 描述 API 的模式可以带来易于使用、灵活的 API 框架,我们很高兴能在更多项目中利用它。

Brandon Phillips关于作者
Brandon Phillips (CoreOS)
Brandon Philips 作为 CTO 正在帮助 CoreOS 构建现代 Linux 服务器基础设施。在加入 CoreOS 之前,他在 Rackspace 从事云监控工作,并在 SUSE 担任 Linux 内核开发人员。作为俄勒冈州立大学开源实验室的毕业生,他对开源技术充满热情。

2016 年协作峰会上 Jeff Borek 的项目更新

作者: 博客

Linux 基金会邀请我在今年早些时候在太浩湖举行的 Linux 协作峰会上进行 闪电演讲。我很高兴代表 OpenAPI Initiative 发言,并讨论人们对开放 API 的兴趣日益增长以及 Swagger 项目的未来。该规范现在由 Linux 基金会的这个工作组指导,这对我们来说意义重大,我们 IBM 对规范和相关代码库的未来发展感到兴奋,因为我们将与项目创始人 Tony Tam 和更广泛的社区一起推广开放 API 技术。

点击下面的图片观看我于 2016 年 3 月 27 日发表的 3 分钟演讲。您也可以在 Twitter 上关注我:@jeffborek
Jeff Borek of IBM at Collaboration Summit 2016

Jeff Borek关于作者
Jeff Borek
Jeff Borek(IBM 全球开放技术与合作伙伴关系项目总监)是一位资深的技术和通信高管,在软件、电信和信息技术/咨询行业拥有超过 20 年的领导力和技术经验。他目前是开放技术与合作伙伴关系团队的业务开发负责人——与客户、业务合作伙伴、领先的行业分析师以及各种开源社区计划合作,包括:Linux 基金会、OpenStack 云软件项目和 Cloud Foundry 基金会。他还代表 IBM 担任 Docker 治理咨询委员会的现任主席,但对我们来说最重要的是,他还是 Open API Initiative 的董事会成员。您可以在 Twitter 上关注他。