一个正在被API驱动的互联网时代

423 阅读8分钟
原文链接: click.aliyun.com

API做为每个重要信息技术趋势的核心内容。移动设计、云计算、物联网、大数据及社交网络等应用都依赖于一个基于web的界面与它们的分布式组件进行连接,为全球范围内的各个商业领域提供具有创新性和颠覆性的解决方法。而API的使用既是催化剂,也是促成成果的主要力量。


什么是API? 


应用程序接口(英文:Application Programming Interface,缩写API),就是接口,也是通道,负责一个程序和其他软件的沟通,本质是预先定义的函数。

举个简单的栗子,假设物流中“货物”是数据,存放货物的“总仓库”是数据库,“店铺”是我们的网站、App。页面上显示的内容、数字,以及用户的操作请求和结果都是需要不停搬运的“货物”数据,则负责调配分配打包的中转站就是API,店铺小哥直接从中转站取货就好。

对于软件提供商来说,开放API,让别的应用程序来调用,形成生态,软件才能发挥最大的价值,才能更有生命力。

对于应用开发者来说,有了开放的API,就可以直接调用多家公司做好的功能来做自己的应用,不需要所有的事情都自己操刀,节省精力。

API就是技术服务商为客户提供服务的方法。

冬天不穿秋裤,你妈一定以为你疯了。但是作为一名程序员,如果没跟API打过交道同样是件不可思议的事情。

当然我们在互联网时代所说的狭义的API概念可能与桌面软件时代广义的API有所不同。在维基百科中是这么定义的:API就是软件系统不同组成部分衔接的约定。由于近年来软件的规模日益庞大,常常需要把复杂的系统划分成小的组成部分,编程接口的设计十分重要。程序设计的实践中,编程接口的设计首先要使软件系统的职责得到合理划分。良好的接口设计可以降低系统各部分的相互依赖,提高组成单元的内聚性,降低组成单元间的耦合程度,从而提高系统的维护性和扩展性。


API的哲学意义


生活中,每天的穿衣、吃饭、如厕、睡觉是最基本的诉求。但人类文明发展至今,我们穿的衣服、出行搭载的交通工具、吃饭的粮食、住的房子等等一切几乎很少是我们直接参与生产的,在经济学中我们称之为社会分工。分工最大的好处,就是熟能生巧,让专业的人做专业的事,而需要这些资源的人,可以拿自己生产的物资间接(货币)或直接的交换。

追溯到社会的发展,从最简单的采集狩猎时代,逐渐演变成现在这样错综复杂的结构,在未来它会继续的演化产生更细致的分工。在这个漫长演化过程中,人类的社会文明中逐渐产生了语言、文字、货币、契约等这些维系社会结构的基本要素;类比信息时代,这些要素就是不同的社会分工群体之间互相调用的“API”规范。

原子、电子之间的相互作用也好,人类社会的交易合作也好,IT系统之间通讯的API也好,其哲学意义的本质都是一种契约(规则),这个所有成员共同维护的契约让难以解决的复杂问题变得简单。


API的分类


早期计算机网络应用程序有C/S和B/S两种架构模式,这两种架构模式各有优缺点。随着Web技术越来越成熟,各种技术规范也层出不穷,后来在大型互联网公司中流行起来的开放平台促成了第三种架构:OpenAPI。

2fdc9dbfe5bcd57c186b70433d9d7d7b6346f2bc


应用程序API


这里主要指的是非Web应用程序,它为第三方开发者提供了可控访问软件内部功能的接口。例如:Windows API(msdn.microsoft.com/zh-cn/libra…)和Android(developer.android.com/guide/index…),他们通过暴露操作系统核心API,使应用程序在获得授权的情况下使用受系统保护的计算机硬件资源(IO设备、GPS等);浏览器同样为JavaScript准备了API( developer.mozilla.org/zh-CN/docs/…),从而使HTML、CSS、JavaScript经过渲染显示出各种程序设定的文字、图像及声音等。

应用程序API通常适用于当前设备内的应用程序交互。


基于Web的私有API和OpenAPI


和应用程序API比起来,RESTful API、OpenAPI更被Web程序员所熟知。它们是更高级的API(资源和业务属性更强)。根本上它是脱离操作系统的限制,从Web资源的角度定义了API交互的规则。  

Web服务端通过RESTful API向客户端提供数据资源的访问通道,PC浏览器、iOS、安卓等平台中运行的终端APP能够按照既定的规则使用服务器中的数据,使分布在各处的用户可以借助不同的设备连接到服务中心,服务商以此提供娱乐、购物、聊天、内容咨询等。

在私有API中,还有一种微服务API,它与微服务架构风格息息相关。但微服务API一般无法在公网使用的,它使几个相对简单的子系统有机结合,形成一个整体并对外提供一个足够复杂的服务。OpenAPI是对外部IT系统提供的一种资源调用方案,一般都有严格的鉴权规则,来确保资源被安全的使用。

 

bd59b42fe39c6e84b268d3da8a903fa46ed56e20

 

用一张表格比较不同API的特点:


API种类

跨设备

协议

长连接

性质

应用程序API

API约定

/

私有

RESTful API

HTTP(S)

私有

Websocks API

Websocket

私有

RPC API

HTTP(S)

私有

微服务API

HTTP(S)

私有

OpenAPI

HTTP(S)

公开

 


OpenAPI会成为IT系统的标准功能


现在,你可以打开百度,搜索关键词“开放平台”。浏览检索到的结果,你会发现几乎所有耳熟能详的互联网公司都有自己的开放平台生态,他们通过OpenAPI让开发者可以方便的使用他们的服务,并以此扩大自己的影响力。

 

一个既成事实是:没有API,所有的IT系统都会成为数据孤岛;一个IT系统的OpenAPI被其它IT系统调用的规模,是这个IT系统价值的关键指标。我认为,IT系统之间的API经历了3个阶段:

阶段

对接内容

案例及说明

第一阶段

数据能力

数据同步与传输,如淘宝聚石塔

第二阶段

技术能力

技术能力服务化,如计算能力、复杂算法、人工智能

第三阶段

业务能力

业务服务化,如阿里云


以懒猪行的模式和经验为例:懒猪作为旅业S2B平台Top1,掌握丰富的境外目的地落地资源,为了把这些资源的价值最大化,我们充分借助各大OTA平台的OpenAPI向分销商家赋能,让懒猪的S端资源与国内的旅业生态无缝接合。同时,在未来懒猪会借助OpenAPI系统,让下单、订单处理等过程变得可以程序化,使与合作伙伴业务能力的全面对接成为可能。这对业务团队的人效提升是相当可观的,在IT时代我们应当这么做,像马克思说的:科技是第一生产力。

 

阿里云已将其业务能力完全API化,并提供多语言SDK。它凭借一套OpenAPI,让开发者可以通过内部编程的方式灵活的部署配置公有云产品,而且OpenAPI使得调用云端资源变得比使用自己本地的资源还方便,IT系统之间的合作不就应该是这样子嘛。建议访问https://api.aliyun.com感受一下。

 


最后,以“Gall’s Law”结尾


A complex system that works is invariably found to have evolved from from a simple system that worked.

A complex system designed from scratch never works and cannot be made to work.You have to start over,beginning with a working simple system.

***"A simple system may or may not work.”

 

互联网时代的上半场还没有结束,API会让“互联”二字演绎的更加透彻,让承载人类文明的全球信息系统更加紧密相连。

 

扩展阅读

[1] 理解面向HTTP API的REST和RPC (www.oschina.net/translate/u…)

[2] OpenAPI规范 (github.com/OAI/OpenAPI…)

[3] API文档规范Swagger UI (swagger.io/docs/specif…)