API经济与实现之路
API经济的兴起
在谈API经济之前,我们需要先了解API的概念。
API的全称是Application Programming Interface,即应用编程接口,它是软件系统不同组成部分衔接的约定标准。本质上,API 是对应用进行封装、对外开放访问接口,以便被其他应用或者客户端访问。
随着软件的种类越来越多、功能越来越丰富,软件在设计的时候,通常是将一个复杂的大系统划分成多个小的单元,而各个小的单元需要相互协作,编程接口的设计就显得尤为重要。编程接口的设计,要能够提升单元内部的内聚性、降低单元之间的耦合程度,最终提升整个软件系统的健壮性和可扩展性。
在了解了API(对业务进行API化)的概念后,我们在看一下API经济这个话题,API经济伴随着Gartner 定义的第三平台(云计算、移动互联网、大数据、社交)而产生的。API 经济的热潮,在西方国家出现比较早。早在2012年,国际互联网巨头如Salesforce、Google、Twitter 等公司,就通过API为他们带来了巨大的经济效益。
API 经济,听起来很缥缈,但其实离我们日常生活很近,举个例子:我们在经常使用的导航软件高德地图,在输入我们出发地址和目的地之后,可以显示从出发地址到目的地之间的距离和路径;接下来,选择打车菜单,我们可以看到神州专车和首汽约车,并显示对应的价格,如下图所示,我们可以根据自己的需要,选择使用哪个网约车。
高德地图和首汽约车之间的应用的调用,使用的就是API调用的方式,两个公司之间API的调用,可能产生一些计费和流量管理的需求。
对于云厂商或者互联网公司而言,完全可以将自己的应用(如地图服务、字典服务、邮件服务等),以API的方式暴露到互联网上,其他公司使用API的时候,可以进行一定程度的收费,从而实现API 经济。
所以说,API经济的本质,是企业通过技术把自己的业务服务化,然后通过API的方式暴露给客户,然后被客户使用,从而收取一定的费用。伴随着国内数字经济的发展,API经济将会成为数字化的核心力量。
API 经济的实现
从技术角度而言,需要对企业的业务服务化,然后通过API实现对外暴露,在这个过程中,从技术角度来说,需要考虑以下几个部分:
API灵活的访问控制
API的身份认证和授权
API合同和费率限制
API访问分析和报告
API的计费
API访问控制
对于企业而言,API大致分为两类:
对内的API:通常不会直接产生经济效应,虽然在内部,也需要对其进行安全控制
对外的API:通常会将应用的API接口暴露给互联网,因此其访问控制和安全就变得尤为重要。
在传统的开发模式中,API的访问控制都是通过在应用的源代码中实现的,这种访问控制的实现,主要由应用程序开发人员来实现,对于对内的API而言,这种方式是没有什么问题。但是在对外开放的API中,开发人员在编写代码的时候,很难讲后续API的所有调用场景考虑周全,比如:调用次数,调用频率,调用权限等。因此,针对产生经济效益的API,我们需要将API 调换用的安全从应用代码中隔离出来,放到API 专有的平台中来管理。
API 的身份认证与授权
API 的身份认证与授权本质上是为了保证 API 的安全。
在 API 经济的时代,API 的身份认证与授权,必须要兼顾安全性、可用性、可扩展性:
针对于 API 的身份认证,可以使用 OpenID。
针对于 API 授权,可以 OAuth2.0。
OpenID 是一种开放的身份验证标准。用户通过 OpenID 身份提供商获取 OpenID 帐户。然后,用户将使用该帐户登录任何接受 OpenID 身份验证的网站。
OpenID 建立在 OAuth 2.0 协议之上,允许客户端验证最终用户的身份并获取基本配置文件信息 RESTful HTTP API,使用 JSON 作为数据格式。
开放授权 (OAuth)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源,而无需将用户名和密码提供给第三方应用。OAuth 2.0 是 OAuth 协议的下一版本,相比于 OAuth1.0,更关注客户端开发者的简易性;它为移动应用(手机、平板电脑、Web 等)提供了专门的认证流程。
OAuth 2.0+ OpenID 的方式,在互联网已经被大量使用。
举一个我们身边的例子:我们登录很多手机 app 或者网站,都可以通过微信认证,例如今日头条。
在这个认证和授权的过程中,微信就是 OpenID 身份提供方,而今日头条,就是 OpenID 身份依赖方。
下面用通过微信登录今日头条的例子来演示 API 的身份认证与授权过程。
1 打开浏览器,登录今日头条网站,如图 2 所示。点击通过微信授权登录。这时候,相当于客户端向今日头条的服务器发起授权请求。
2 今日头条响应一个重定向地址给客户端,这个地址指向微信授权登录。
3 浏览器接到重定向地址,再次发起访问,这次是向微信授权服务器发起请求,屏幕出现二维码,如下图所示:
在这个过程中,微信认证服务器也对用户进行了身份认证,只是因为用户在扫描的时候,微信已经在手机登录了(用户在微信认证服务器上,首先验证了自己的身份,然后用微信同意今日头条客户端发起的授权请求,也就是拿起手机用微信扫描二维码)。
4 此时拿手机微信扫描电脑屏幕的二维码,并且在手机微信上点击同意授权登录,如下图所示:
5 接下来,微信授权服务器会返回给浏览器一个 code。 浏览器通过获取到的 code,向认证服务器发起申请有效令牌 (token)的请求。认证服务器返回 token。
6 浏览器拿到 token,向认证服务器获取用户信息。认证服务器返回用户信息。
用户信息在浏览器展示出来。截至到目前,登录过程完毕。
8 客户端通过 token 向资源服务器申请资源(例如今日头条只开放给会员看的一些文章或者视频)。
今日头条的服务器,确认 token 无误,同意向客户端开放资源。
API 合同和限速
在 API 经济下,相同的一个 API,可以配置成不同的”套餐”(合同)。不同的套餐,可以设置不同的限速。例如:
对于白金套餐,API 被调用次数不限。
对于金卡套餐,API 每个小时可以被调用 100 次。
对于普通套餐,API 每个小时可以被调用 15 次。
当 API 被调用的次数超过限速的设置,需要返回报错。
API 访问分析和报告
在 API 经济下,我们需要对 API 的访问进行统计。
API 的种类,可以按照按照是否是 Web 类的分发。在第三平台中,互联网中以 Web API 居多,而 Web API 又大致分为两类:
JAX-RS: 是用于创建轻量级 RESTful Web 服务的 Java API。
JAX-WS: 是使用简单对象访问协议(SOAP)的基于 XML 的 Web 服务的 Java API。
JAX-RS 的一个很大的好处是支持 HTTP(s)协议,也就是可以响应四种 HTTP 的方法,具体而言:
GET:检索数据。
POST:创建一个新实体。
DELETE:删除实体。
PUT:更新实体。
在 API 经济下,API 访问和分析报告,应可以对一个 API 的某个 URI 的 HTTP 调用方法进行统计,如某个 URI 在一段时间内被 GET、POST 了多少次等。并且,可以形成分析报告。
API 的计费
在云时代,计费是很重要的一个功能。而在 API 经济下,我们需要考虑 API 如何进行计费。
API 的计费方式,可以按照功能和流量收费:
所谓功能,主要指的就是同一个应用,通过 API 进行暴露出的不同的功能,主要是通过设置应用不同的 URI 访问权限来实现的。
而流量,主要是指 API 调用的次数。
在 API 经济模式下,API 的计费这两点都需要考虑到。
API 网关与 API 管理的区别
API 网关是一个软件系统的唯一入口,它封装了软件系统内部体系结构、对外为客户端提供 API。客户端不必关注软件系统的内部结构。而 API 管理在是对 API 进行安全、授权、限速、计费进行丰富的高级策略管理的企业级解决方案。
API 网关的出现早于 API 管理。很多时候,这两个概念容易被混淆。API 管理包含 API 网关的功能,而 API 网关缺乏 API 管理的高级策略。二者具体对比如下:
表 1. API 网关与 API 管理的对比
比较项 |
API 网关 |
API 管理 |
适用场景 |
微服务内部调用,团队内快捷接入。 |
跨系统、跨团队、企业级统一管控,对外接入控制。 |
API 受管实现机制(API 提供方) |
由开发人员主导; 代码侵入式实现 API 受管。 |
无需修改代码; 有必要暴露给外部使用的 API,通过 UI 界面手动注册到 API 管理平台。 |
API 生命周期管理 |
靠修改代码实现 |
Web 界面操作 |
管理与运行分离 |
除了写在代码里的部分,网关还依赖 Eureka、Ribbon 才能运行。 |
API 管理平台与 API 网关分离,各司其职。 |
审批流程 |
无 |
API 从测试到生产的全过程,需要审批。 |
支持多语言 |
Java 等语言 |
不限 |
支持传统应用 |
不支持 |
支持 |
结束语
通过本文的介绍,相信您对于时下火热的 API 经济已经有了大致的了解。对于企业客户而言,若想将 API 经济落地,需要从本文提到的几个技术层面进行考量,然后选择适合自己的企业级 API 管理解决方案。