OpenAPI(通常简称为OpenAPI的)是用来描述一组技术,使彼此交互的网站,通过使用SOAP,Javascript的任何其他网络技术的一个字。虽然它的可能性并不局限于基于Web的应用程序,它成为增加的趋势在所谓的Web 2.0应用程序长期API代表应用程序编程接口。
术语“开放API”一直在使用,是社交媒体和web2.0的近期趋势,这是一个严重的追捧更流畅的用户友好的方式解互连网站。像MySpace上,Bebo的,和Facebook的社会网络站点,目前没有任何开放的API,但的成长趋势和社交网络聚合网站的需求像PeopleAggregator的,Spokeo和SocialURL将成为这些社交网络更为普遍开始考虑的机会,以这几乎是Web 3.0的努力发挥领导作用。开放的API也适用于托管服务提供商也可以具体的服务外包给其他供应商通过系统集成的协作服务环境。例如,企业级平台一样提供一个开放的API内适应任何业务祭的托管服务环境。
Open API随着Facebook的平台,推出了2007年6月1日,Facebook的注册成立到其商业模式的开放式API
目前正在开发的OpenSocial由谷歌与MySpace等社交网络,包括Bebo.com Engage.com,Friendster的,保持联系hi5,Hyves的,imeem的,LinkedIn,MySpace上,宁,甲骨文的orkut,Plaxo的,Salesforce.com,Six Apart的结合,天机,Viadeo,邢。最终的目标是任何社交网站是能够实现的API和主机的第三方社交应用。
“开放API”也变得非常受欢迎,其中技术软件,不同行业之间的合作为宗旨。如建筑师和工程师之间。由于有不同的软件结构,建筑设计,这些行业找到了一种利用每个人的工作,通过“开放API”。例如,一个建筑师可以在CAD软件中绘制,并到他们的软件工程师(土木,机械),可以实施这些计划。基本上它是用于翻译目的。
API的全称是应用编程接口(Application Programming Interface),这并不是一个新概念,在计算机操作系统出现的早期就已经存在了。在互联网时代,把网站的服务封装成一系列计算机易识别的数据接口开放出去,供第三方开发者使用,这种行为就叫做开放网站的API,与之对应的,所开放的API就被称作openAPI。
使用API构建业务是实现开放式业务结构的关键技术,也是下一代网络区别于传统电信网的主要特点之一。目前,关于下一代网络的开放式业务API标准主要包括:由Parlay组织、3GPP和ETSI SPAN共同制定的Parlay/OSA API以及由SUN公司在Java平台上推出的JAIN API。
在google开放API之前,已经有amazon和ebay等公司开放API,但是对应的数据集中在商品上,与人们的日常
OpenAPI互联网应用有一定的距离。真正推动整个互联网开放的发端,应该算是google在2005年开放google maps的API,由此涌现出众多的web2.0应用,也推动Yahoo! Maps开放API。Google的开放触动了微软,在2005年9月,微软推出其“Web 平台”(Web Platform)策略,策略中包括公开MSN Search等一些公共Web网站的API、发布更好的开发工具等措施。微软的目标是采用Web 2.0或可编程Web的新兴模式,基于这些已经存在的、公开的Web网站而建立新的应用。在这种模式下,互联网公司不仅仅能提供对Web网页的简单访问,还可以将它们的Web网站转换为与操作系统等价的开发平台。三大巨头的参与,使得开放大潮风起云涌。
在开放API的环境下,我们就可以对原有的一些碎片化的数据进行重组,使其变得更有有关联。这时候出现了叫做mashup的东西。mashup又叫做web应用混搭技术,指的是利用其他网站的openAPI提供的内容进行重新搭配,从而制作出独特的、具有新价值的web应用的一种技术。其中最具代表性的当属运用google maps提供的开放地理信息而创作出的令人眼花缭乱、极具创意的mashup应用,比如:housingmap是一个非常cool的mashup应用。它利用了craigslist和Google Maps的openAPI,把它们巧妙的组合起来,让租房的信息有机的组织和直观的显示在google maps提供的地图之上;twittervision是把twitter和google maps的openapi进行mashup而形成的一个非常有趣的应用。进入twittervision网站,你会看到一个世界地图,地图上会不断冒出一些消息气泡,气泡里的内容就是某个人在twitter上喊话的内容了,而气泡的位置则是根据喊话人的地理位置信息而标记在了google maps上,当然它现在已经融合了更多网站的内容。
google在开放API方面的确称得上是开拓者和领导者,不仅拥有search API, chart API, map api, opens ocial API等一系列还在不断增长的API列表,更在开放平台方面发力,推出开放的手机平台android和云计算平台appengine。在google、yahoo、微软的带动下,flickr、youtube等一系列网站也都纷纷对自己的服务提供了API供第三方开发者使用。
openAPI按照制定者与遵循者的关系可以简单划分成两个大类:
1、专有
一个API制定出来主要是为了制定者本身提供应用开发接口的目的,这样的API就叫做专有API,例如facebook的API。大部分的API制定之初都是专有API,极特别的情况除外(例如google的open social,制定出来是给其他网站用,形成一种标准)。
2、标准
一个API称之为标准API,或者是制定者并不提供该API所定义的服务,例如google opensocial——此时它必须为成为业界标准而努力;或者是该API被业内很多服务提供者所遵循,例如RSS——要么是因为业内形成事实标准,要么是已经被标准化组织采纳。
openAPI按照提供的服务内容进行分类大概可以划分成下面几类:
网络开放平台实例
1、搜索类
搜索类的API主要由搜索引擎提供商提供,主要可用来为你的网站添加搜索功能,或者利用其搜索结果进行组装。典型的例子如google search API, yahoo search API等。运用搜索API进行mashup,可以做出好玩的应用。
2、文字资讯类
不可否认,RSS接口可以成为几乎所有文字资讯类服务,如资讯类网站、博客、论坛的标准API。也因此,google reader、抓虾、鲜果等阅读器才能够轻松我们的阅读生活。而在此之外,还有许多专有的API提供这专有的文字资讯类服务,例如twitter的API、craigslist的API、豆瓣的API等。
3、多媒体类(图片、视频等)
flickr是雅虎旗下的著名图片分享网站,flickr开放了API接口,所以才有第三方fans为它开发各种操作系统下的五花八门的工具)。
google旗下的视频网站youtube也是同样因开放API而受益匪浅。
4、地理信息类
如前所述,地图API应该算得上是最有趣的API之一了,因为它为一维的文字信息提供了一个二维的载体,此外,互联网上的信息7、80%与地理位置有关也是重要的原因。所以google、yahoo纷纷开放了自己的地图API。google更是搞到了地球的卫星图片,做了三维的地理信息服务及开放接口,那就是著名的谷歌地球google earth及其API。有人用google earth做了个游戏,可以去玩玩。
5、用户及关系类
在社交网站风靡的今天,用户关系信息也成为一大类重要的数据。这方面的杰出代表就是facebook,它通过开放API使得大量的第三方开发者可以在其社会化网络平台上开发出成千上百的应用,从而极大丰富了其平台自身的功用和乐趣。
OpenAPI实例而google也不甘寂寞,2007年11月1日,Google宣布了自己的社会关系平台标准Open Social。并且与acebook把接口专有的做法不同,google致力于推广这套API,力图使得全世界的社交网站都遵循这个标准API开放它们的数据。凭借google在互联网界的强大号召力, 参与此一开放平台的,除了MySpace外,还包括Engage.com、Friendster、hi5、Hyves、 imeem、LinkedIn、Ning、Oracle、Orkut、Plaxo、Salesforce.com、Six Apart、Tianji、Viadeo、XING等等网站。
在google大力推广Open Social这个开放平台标准的压力下,在今年6月,Facebook 把旗下的 F8 完全转变为开放源代码的平台,这无意给社交网络开放平台的标准之争增加了更多变数。
6、电子商务类
电子商务类网站提供的服务主要是围绕企业信息、商品信息展开的,此类网站开放API的主要目的是吸引第三方开发者开发各种附加功能,提高访问量、成交量或者用户粘性,从而提高网站自身的盈利水平,同时,将提高的部分盈利与第三方开发者利益分摊,吸引开发者持续开发和运营。典型的代表如amazon。据悉国内的C2C网站淘宝也即将开放API。
7、注册类
还有一类不太引人注意的API,那就是注册类的API。几乎所有的网站在开放接口的时候都会同时提供一套供用户认证身份的专有API。但是openID这个项目却是在致力于提供一个标准的、通用的注册API,如果所有网站都遵守了openID规范,那么我们就不用为每个网站记住一套用户名和密码了。
互联网上Open API的形态,主要分成两种:标准REST和类REST(也可以叫做RPC形态)。
REST形态主要有如下特点:
1.服务地址就是资源定位地址。
2.服务操作就是Http请求中的方法类型(GET,POST,DELETE,PUT),这其实是抽象现实当中对于服务的增删改查操作。Google大部分的RESTAPI就采用了标准的REST风格,服务请求地址URL如下。
这个服务请求地址是用来定位以我阿里巴巴邮箱注册的Google帐号的所有日程安排,通过在Http消息头中配置Get、Post、DELETE、PUT可以对我的日程进行操作,而无须登陆到Google上去操作。(后面部分的实践中会有部分介绍如何通过后台Java代码直接操作)
对于REST形式的讨论在网上一直有,但其实这种讨论没有什么意义,其实就好比争论吃饭是否一定要用筷子,没有什么技术是“万能药”,也没有什么技术好于不好,只有使用它的人是否有足够的智慧把它应用到适合的场景中。
对于类REST的形态来说优点在于对于原有系统的改造较小,“当前”用户使用接受
OpenAPI度更高一些,对于逻辑抽象来说更加容易。而REST风格的优点在于,资源容易管理,系统扩展容易,权限控制可以部分依托于已有的传输协议。两者的缺点其实就是对方的优点。采取什么模式,其实还是要根据企业本身情况来看,类似于淘宝采用的就是类REST方式,而未来支付宝将会采用REST的方式,前者要改造整个系统架构和资源数据结构基本是不太可能完成的任务,后者对于业务逻辑梳理以及在现有内部SOA架构体系下抽象出REST风格的API并不是一件难事。但最后还是那句话,形态仅仅只是外在,练功之人修炼好内力才是根本,没有必要为了迎合一种所谓的潮流而去盲目的选择形态,因为服务提供商将要面对的是高过网站上百甚至更高流量的访问调用,如何满足开发者业务以及非业务(稳定,高效,安全)的需求,才是最大的挑战。
对于互联网应用来说,最大的特点也是最大的优点就是基于Http协议开发成为应用开发的统一标准。对于使用的语言,采用的操作系统和应用部署平台都没有太多的限制。WebService采用xml作为数据传输承载,制定了解析标准(以及后来安全,转发等标准)为开发者异构系统的信息交互带来了可能,也成为至今为止应用最广泛的服务集成方式。而随着Web2.0发展,RSS、Atom、JSON的大规模应用,对于数据交互格式有了更多的选择。
服务请求就是标准的Http的请求,对于文件类上传的服务采用HTTP Multipart的格式。编码方式基本都采用UTF-8的编码方式。
在OpenAPI的数据返回格式方面,大部分的网站优先提供Xml、JSON的数据返回,Google定义的GData就是在Atom基础上作了扩展,还有一些网站提供了php的数据返回。同时有些网站会在OpenAPI的基础上作更高的一层封装,类似于Google Map,可以通过javascript框架来直接使用。
1999年,年仅37岁的甲骨文(oracle)高级副总裁,俄罗斯裔美国人马克·贝尼奥夫创办了Salesforce.com,马克·贝尼奥夫被誉为“软件终结者”,开创了首度云计算和软件即服务 (SaaS) 的理念。Salesforce.com是一个提供按需定制客户关系管理服务的网站,提供企业级的Web应用和API的云服务供应商。2003年salesforce.com推出Sforce,为世界首个公开的企业云计算API程序语言,由此,开放API拉开了序幕。随后,eBay、Amazon、Flickr、Facebook、Twitter、Google Maps、Foursquare、Instagram等等都相继开放了API。
Open API历史发展时间轴早在Google开放API之前,已经有Amazon和eBay等公司开放API,但是对应的数据集中在商品上,与人们的日常互联网应用有一定的距离。真正推动整个互联网开放的发端,应该算是Google在2005年开放Google Maps的API,由此涌现出众多的Web2.0应用,也推动Yahoo! Maps开放API。
Google的开放触动了微软,在2005年9月,微软推出其“Web 平台”(Web Platform)策略,策略中包括公开MSN Search等一些公共Web网站的API、发布更好的开发工具等措施。微软的目标是采用Web 2.0或可编程Web的新兴模式,基于这些已经存在的、公开的Web网站而建立新的应用。在这种模式下,互联网公司不仅仅能提供对Web网页的简单访问,还可以将它们的Web网站转换为与操作系统等价的开发平台。由此,三大巨头的参与,使得开放大潮风起云涌。
OpenAPI历史发展时间轴在开放API的环境下,我们就可以对原有的一些碎片化的数据进行重组,使其变得更有有关联。这时候出现了叫做 Mashup的东西。
Mashup又叫做Web应用混搭技术,指的是利用其他网站的openAPI提供的内容进行重新搭配,从而制作出独特的、具有新价值的Web应用的一种技术。 其中最具代表性的当属运用Google Maps提供的开放地理信息而创作出的令人眼花缭乱、极具创意的mashup应用,比如:housingmap是一个非常Cool的Mashup应用。它利用了craigslist和Google Maps的openAPI,把它们巧妙的组合起来,让租房的信息有机的组织和直观的显示在Google Maps提供的地图之上;Twittervision是把Twitter和Google Maps的OpenAPI进行Mashup而形成的一个非常有趣的应用。进入Twittervision网站,你会看到一个世界地图,地图上会不断冒出一些消息气泡,气泡里的内容就是某个人在Twitter上喊话的内容了,而气泡的位置则是根据喊话人的地理位置信息而标记在了Google Maps上,当然它现在已经融合了更多网站的内容。
Google在开放API方面的确称得上是开拓者和领导者,不仅拥有Search API,Chart API,Map API,Opens ocial API等一系列还在不断增长的API列表,更在开放平台方面发力,推出开放的手机平台Android和云计算平台AppEngine。在Google、Yahoo!、微软的带动下, Flickr、YouTube等一系列网站也都纷纷对自己的服务提供了API供第三方开发者使用。
在国外互联网的带动下,中国互联网也正走向开放平台时代。对于国内的开发者来说,在SNS热潮中第一次接触了Open API,但这仅仅只是开始。SNS提供的API以及现有的一些分享类网站提供的API,仅仅只是Open API中的一角,在中国开放平台的竞争中,以百度、腾讯、新浪、淘宝等几个巨头为主,涌现出了百家争艳的格局,给中国的开发者带来了极大的机遇,这种开发模式是一种挑战,一种创新更是一种机会。可以说,Open API是大平台发展、共享的途径,让开发者付出更少的成本来开发一些成功的且有更多价值的应用。[1]
随着互联网发展的多元化,更多的技术人员投入到网络应用的开发上,及网络开发门槛降低化,让更多的技术人员可以更容易的发展多家互联网可使用的API,更多的企业网站开发了API加大了技术人员在这方面投入的精力,未来几年将是API飞速发展的几年,让更多企业网站内容更丰富与访问者更加互动。
2016年6月,一个广泛存在于Java、PHP、NodeJS和Ruby等流行语言开发应用的漏洞被发现,该漏洞存在于OpenAPI(Swagger Code Generator)中,属于参数注入漏洞,凡是整合OpenAPI的应用都会受到影响。[2]
求购