写点什么

APIs.json 发现格式, API 经济的潜在引擎

  • 2015-09-01
  • 本文字数:4923 字

    阅读完需:约 16 分钟

本系列文章专注于 Web API__ 之 “元语言”的三个关键领域:即 API__ 描述、API__ 发现以及 API__ 档案。这些文章将涵盖所有这三个重要的趋势,并包括对这一快速发展的领域的一些关键人物的专访。

来自 InfoQ__ 的这篇文章是“描述、发现以及档案:进入Web API__ 的下一阶段”系列文章中的一篇,你可以在这里进行订阅,以便通过RSS__ 获取新文章的通知。

在API 与微服务飞速发展的当今世界,如何在开发web 或移动应用时、或者是对现有的系统进行集成时找到最合适的API,通常是一项乏味的任务。与之相对的是,许多API 提供者为了让他们所有的最有价值的、以API 驱动的资源能够为潜在的调用者所发现并方便地进行访问而绞尽脑汁。截至2014 年底,市场上所存在的API 目录也只有为数不多的几个,API 提供者能够在此列出他们的API,而API 调用者可以在此找到他们所需的API。虽然这种途径目前已经经过了一段时间的应用,但它是专门为了人类而设计的,其它应用程序与系统无法通过这种途径找到适合的API,并根据他们调用的API 资源进行相应的决策,

APIs.json 于 2014 年 5 月发布

在 2014 年 5 月, 作为一家 API 管理基础设施提供者,3Scale 与 API Evangelist 共同合作,推出了一种机器可读的开放式 API 发现格式,名为APIs.jsonAPIs.json的目标是提供一种简单而通用的格式,可用于对 API 以及 API 运营的支持性元素进行索引。APIs.json的工作方式类似于 Sitemap XML 的格式,但它的设计目的不是对网站进行索引,而是对各种 _API_ 进行索引,并将索引结果上传至一个众所周知的地点,API 的提供者可以将他们的API 资源的索引发布在此。

APIs.json 的设计目标是为 API 提供者一个简单的方式以更新他们的 API 索引,同时也让其它搜索引擎、目标与 API 服务提供者访问本地索引,让该领域中的 API 资源可被发现。

快速了解 APIs.json

APIs.json的定义总是由一些基础信息的描述开始,用以表示 API 的作者,并将描述信息放在文件的头信息中,这为调用者提供了关于 API 作者的一些描述参数,包括名称、描述、图片、标签、创建日期、最后修改日期、以及该APIs.json所发布的 url。

基本 APIs.json 指令集

复制代码
{
"name": "API Evangelist",
"description": "This is an inventory of APIs available as part of the API Evangelist network.",
"image": "https://s3.amazonaws.com/kinlane-productions/api-evangelist/t-shirts/KL_InApiWeTrust-1000.png",
"tags": [
"application programming interface",
"API",
"News",
"Analysis"
],
"created": "2014-04-07",
"modified": "2014-07-09",
"url": "http://apievangelist.com/*APIs.json*",
"SpecificationVersion": "0.14",
...
}

接下来是APIs.json文件的核心部分,即 API 的集合。它让 API 提供者能够描述集合中的一个或多个 API。与头信息中的参数相似,每个 API 都可以设置几个参数,用以对每个 API 进行描述,包括名称、描述、图片、标签、humanURL(用于让开发者进行访问,以了解该 API 更多信息的 url 地址),以及 baseURL(机器将通过访问这个基本 url 以开始使用该 API)。

APIs.json 文件的核心 —— API 集合

复制代码
...
"apis": [
{
"name": "Analysis",
"description": "Provides access to blog posts and analysis across the API Evangelist network.",
"image": "https://s3.amazonaws.com/kinlane-productions/api-evangelist/t-shirts/KL_InApiWeTrust-1000.png",
"humanURL": "http://developer.apievangelist.com",
"baseURL": "http://api.apievangelist.com/definitions/Analysis",
"tags": [
"blog",
"industry",
"analysis",
"new",
"API",
"Application Programming Interface"
],
...
}
]
...

在定义了 API 的基本元数据集之后,properties 集合让提供者可以定义其它希望引用的 url。比较常见的作法是在APIs.json的开头部分定义四个属性:X-documentation、X-signup、X-pricing 和 X-tos。当然,你可以定义任何一种希望在 API 中使用的属性,但推荐的方式是先从这几个最基本的构建块开始,因为每个 API 调用者都会查找这些信息。

APIs.json 中最基本的构建块属性

复制代码
...
"properties": [
{
"type": "X-signup",
"url": "https://apievangelist.3scale.net/"
},
{
"type": "Swagger",
"url": "http://api.apievangelist.com/definitions/Analysis"
},
{
"type": "X-blog",
"url": "http://developer.apievangelist.com/blog/"
},
{
"type": "X-apicommonsmanifest",
"url": "https://raw.githubusercontent.com/kinlane/analysis-api/master/api-commons-manifest.json"
}
],
...

作为APIs.json集合的一部分,对它的整体描述将提供该 API 如何进行索引的细节,不过在APIs.json格式中的其它部分也可以加入联系方式、标签以及对其它相关APIs.json文件的引用。APIs.json的设计方式是成功一种将元数据与 API 运营进行挂钩的基本框架,同时作为一种高度可扩展的 url 类型格式,可以在必要时在其中加入任意的外部引用,用于完整地描述 API 运营的每一方面。

不仅是一种发现格式

如果你在一群技术专家当中提起 API 发现这个话题,他们会很快地指出现有的一些 API 发现的解决方案,这些方案中通常会包括在 API 设计生命周期的早期阶段采用超媒体模式。作为这些现有的 API 发现方式的一种替代方案,APIs.json专注于对当前的、并且在不断发展中的 API 进行索引,而不管它属于超媒体、RESTful 甚至是 SOAP web service 技术。在一个理想的世界中,API 的设计者都应遵循设计原则的通用集,但现实是,我们所面对的是数以千计的“雪花状”API 描述,它们存在于几乎每个在线业务部门的API 中。

APIs.json不仅将 API 发现的人机对话形式扩展为多种不同的服务类型,并且已将功能延伸至 API 发现的技术之外。在多数现已发布的APIs.json文件中,它们首先提供了其 API 的一些通用的技术构建块,例如通过 API Blueprint 或 Swagger 等常见的 API 描述格式对 API 的表面进行描述。不仅如此,APIs.json文件还能够提供各种重要的业务元素,例如对文档、价格说明、API 注册或帐号管理的引用。此外,APIs.json还能够用于记录在 API 运营方面一些更政策性的内容,例如频率限制、认证细节、服务条款以及隐私协议等等。以上所有这些功能综合在一起,再加上机器可读的访问功能,使得APIs.json索引成为 API 运营的技术、业务、以及政策构建块的入口。

自托管的发现能力

虽然APIs.json文件多数情况下只用于单一的域名中(作为一个本地的 API 索引存在),但 APIs.json 文件中所包括的 API 可以分布于任意数量的公开网站或私有网站。这也意味着由 APIs.json 驱动的集合不仅能够为 API 提供索引,同时可以将它们聚合在一起,成为一个更有价值的集合,这种集成能力可用于交付特定并且定向的应用程序、设备以及系统集成功能。

(点击放大图像)

Fitbit 为它的API 设计了专门的 APIs.json文件,而 HP 同样通过 Link Creation Studio 设计了APIs.json,这种做法对于成熟的 API 平台已很常见。这些APIs.json文件由各自的 API 所有者负责维护。而其它任何人,可能是一个 API 代理或是一个应用程序开发代理,都可以发布各自的第三方APIs.json文件,在其中聚合 Fitbit 的 API 以及 Link Creation Studio 的 API,通过这种方式建立一个专用的 API 集合,可用于开发需要用到 Fitbit 数据的应用程序。不仅如此,它还能够提供链接以及图片管理资源,通过图片水印与 QR 码的方式,将各种不同的应用程序连接到真实的世界中。

APIs.json 的工具

即使APIs.json是一种开放的格式,但如果没有现成的工具能够促成 API 的发现与探索,那么它对于 API 的提供者或调用者来说都是没什么价值的。考虑到这一点,人们所开发的第一个由APIs.json驱动的开源搜索工具为 API 的发现带来了一种不同的方式。这个工具本身就具备自己的 API,并且将所有机器可读的APIs.json文件聚合到一个单一的、可以被公众所访问的 API 搜索引擎,名为APIs.io

(点击放大图像)

在2015 年,又有几家公司为其推出了一些相关特性:

1) 企业内部的 API 搜索引擎

2) 支持 Google Chrome 与 Firefox 浏览器的插件

3) 基于 IDE 的集合

4) 电子表格控制台与可连接性

这些特性都是基于APIs.json文件的。而这些特性只是对基于APIs.json开发的现有工具的快速了解,它们将辅助 API 提供者、调用者,以及它们的系统或应用程序,让它们在这个不断扩张的 API 世界中被发现,并且确实有许多 API 已经被成功地发现了。

除了用于开放工具的开发之外,APIs.json的潜能在运行时也得到了充分的表现。它不仅能够作为 API 搜索引擎、集成开发环境、或统一电子表格工具,也可以在任何一个应用程序中作为一个潜在的引擎,为可用的 API 终结点、认证细节、响应代码、底层所用的数据模型、API 的许可选项、频率限制、价格,以及整个 API 集成中的任何一个重要方面提供重要的详细信息。

通过APIs.json,应用程序就能够基于 API 的价格、可靠性、许可服务条款条目等条件选择其底层的云存储提供商,甚至可以基于相同的条件,做出与消息发送、图片、视频或集成其它API 等方面的决策。

简单而强大的设计

APIs.json被设计为一种简单的、机器可读的格式,可以发布至一个人们所熟知的地方,为一个或多个 API 制作详细的索引。这些索引提供了非常有价值的元数据,能够为在 API 搜索引擎、IDE、电子表格以及其它任何工具、应用程序、设备以及系统集成做出实时的决策。APIs.json格式最初的设计是用于 API 发现,但它有很大的潜力成为 API 经济方面的一个潜在的引擎。

(点击放大图像)

对于API 发现这一任务,你很容易将它看作一种临时性的体验。一旦找到一个API,就可以完成你的任务了,API 的发现过程就此结束。但是,在现实中,在我们所创造出的这个永不停歇的数字世界中,这个过程是一而再再而三地不断发生的,我们将永远不停地继续寻找能够满足我们不断发展的需求的API。

伴随着这种API 发现周期的出现,我们也需要更多的数据点,不仅是基于关键字的搜索,也不仅是SOAP 或是REST、JSON 或是XML 风格的发现功能。我们将根据现实世界中的数据点进行API 发现与应用方面的决策,它将对整合过程产生深远的影响,这些数据点包括价格、许可、可用性、稳定性、服务条款等等。我们极度渴望为这些API 运营领域找到机器可读的描述以及各种工具,帮助我们实时地找到合适的API,并指导我们恰当地运用它。

APIs.json是一种仍在发展中的支持工具,可作为那些有价值的、机器可读的数据点的基本框架,次世代的 API 发现工具将打通 API 的运营。不仅如此,从发现、设计到管理、测试以及监控,它还能够让 API 在整个生命周期的每一阶段都做到可访问性。它为这个虚拟引擎描绘了一副蓝图,以驱动整个 API 经济的发展,而不再局限于技术领域。对于从 2015 开始建立的各个业务部门的 API,它将以最恰当的方式处理它们的业务以及政策。

关于作者

Kin Lane 从上世纪 80 年代后期就开始进行数据库方面的工作,最近五年来则完全专注于应用程序编程接口,也就是人们所熟知的 API 方面的技术、业务与政策。Kin 的工作是让技术专家以及“普通人”了解数据的可移植性、互操作性、安全性以及隐私方面的重要性,其范围涵盖了个人以及公司所依赖的 web 以及移动应用平台。他的客户包括创业公司与一般企业,并且还作为一名前任的“总统创新之友”(Presidential Innovation Fellow)计划的成员为政府项目出谋划策。你可以关注他的博客 APIEvangelist.com,以及 Twitter 帐号 @kinlane。

本系列文章专注于 Web API__ 之 “元语言”的三个关键领域:即 API__ 描述、API__ 发现以及 API__ 档案。这些文章将涵盖所有这三个重要的趋势,并包括对这一快速发展的领域的一些关键人物的专访。

来自 InfoQ__ 的这篇文章是“描述、发现以及档案:进入Web API__ 的下一阶段”系列文章中的一篇,你可以在这里进行订阅,以便通过RSS__ 获取新文章的通知。

查看英文原文: The APIs.json Discovery Format: Potential Engine in the API Economy

2015-09-01 06:064056
用户头像

发布了 428 篇内容, 共 185.8 次阅读, 收获喜欢 39 次。

关注

评论

发布
暂无评论
发现更多内容

知名网络安全硬件平台厂商铵泰克加入龙蜥社区

OpenAnolis小助手

开源 网络安全 龙蜥社区 CLA 铵泰克

元宇宙产业投资全景图,快人一步走进元宇宙新时代!

博文视点Broadview

Ubuntu20.04设置静态IP

echeverra

Linux 静态IP

陕西西安等保测评单位有哪些?在哪里可以查到?

行云管家

西安 等保测评 等保测评机构

各厂商的数据湖解决方案

五分钟学大数据

数据湖 6月月更

企业数字化转型该如何做?三个融合、三个转换

小炮

web前端培训React如何原生实现防抖

@零度

前端开发 React

评“开发人员不喜欢低代码和无代码的8个理由”

代码制造者

程序员 编程语言 开发 iVX 低代码开发

Springcloud Oauth2 HA篇

Damon

微服务架构 安全架构 6月月更

后端适用,Apifox接口文档设计和调试教程【工具篇】

Liam

Java 后端 Postman 后端开发 API文档

最佳实践 | 用腾讯云AI语音识别零基础实现小程序语音输入法

牵着蜗牛去散步

最佳实践 语音识别 小程序开发 腾讯云AI 语音输入法

细说腾讯如何做到直播延时降低90%以上方案

C++后台开发

WebRTC CDN 音视频开发 视频直播 直播低延迟

基于模板配置的数据可视化平台

百度Geek说

《数字经济全景白皮书》银行财富管理篇 重磅发布

易观分析

理财 银行理财

ARM64 上的性能怪兽:API 网关 Apache APISIX 在 AWS Graviton3 上的安装和性能测试

API7.ai 技术团队

AWS 网关 arm APISIX

技术干货 | Linkis1.0.2安装及使用指南

康月牙

开源社区 微众银行 WeDataSphere Linkis 使用实践

工资管理系统该如何使用?

低代码小观

企业管理 工资 管理系统

kube-apiserver调度器核心实现

申屠鹏会

k8s

Java 对象如何安全的 toString

HoneyMoose

构建基于React18的电子表格程序

葡萄城技术团队

React 表格 纯前端表格技术

大数据培训Flink高频面试题

@零度

flink 大数据开发

LP流动性挖矿系统开发生态系统详解

开发微hkkf5566

低代码分析盘点:银行业低代码应用需要规避两大误区

易观分析

代码 银行

数据产品学习-实时计算平台

第519区

实时计算 数据产品 数据开发 大数据平台

为什么 SQL 语句使用了索引,但却还是慢查询?

okokabcd

MySQL

网络安全等级测评和商用密码应用安全性评估是一回事吗?

行云管家

网络安全 等级保护 商用密码

分布式数据对象:超级终端的"全局变量"

OpenHarmony开发者

OpenHarmony

defi存币生息理财dapp系统开发逻辑

开发微hkkf5566

精益产品开发体系最佳实践及原则

阿里云云效

云计算 阿里云 精益开发 产品开发 开发

技术干货 | Linkis实践:新引擎实现流程解析

康月牙

Apache 开源社区 WeDataSphere Linkis 使用实践

喜报 | 旺链科技签约汨罗市文旅体产业项目,打造“链”上数字乡村

旺链科技

区块链 产业区块链 乡村振兴 汨罗市

APIs.json 发现格式, API经济的潜在引擎_语言 & 开发_Kin Lane_InfoQ精选文章