Web API(Application Interface)简单来说,便是透过开放的因特网传输协议,将提供的服务内容以标准的界面来定义,以便进行点对点之间的服务整合。由于运行的平台是在 Web架构之上,故常见的技术像是HTTP中的GET/POST、SOAP/HTTP, XML/RPC等,都是主要的组成架构,所定义的数据交换大都是属应用层以上。由于HTTP为企业对外及对内均会开放的传输协议,业已发展成熟,故以 HTTP为基础的Web API也降低了应用服务在整合上的门坎。

山「谷」之「歌」, 余音绕梁

Google
致力于网络技术研发及创新服务的提供不遗余 力,从Web平台到个人桌面化服务,处处可见Google的踪迹。它在网络世界的布局已经由点(单一个别的 Google服务)展开到线(Google服务之间的彼此整合),未来将逐渐扩展到面(提供网络服务整合平台),可谓将Web 2.0的精神发挥得淋漓尽致。

延续对李开复的挖角事件,以及Google在台如同神秘般的征才流程,不管是「谷歌」还是网络上所戏称的「股沟」,Google对因特网所造成的影响已是 有目共睹,它的一举一动已经成为业界必然注目的焦点,纷纷被同业视为模仿及学习的对象,每次新服务的问世都对业界造成不小的震撼,甚至威胁到相关既有服务 的平台供货商,实在是令人又爱又恨的网络巨人。

条条大路通Google

您 会发觉Google所提供的网络服务到处都可以见到,像是使用率最高的网页搜寻引擎,桌面搜寻机制,实时通讯及电子邮件服务。就因为它友善方便的使用方 式,让使用者的接受度大大提高。加上Google技术领先的优势,提供高质量的产品及服务,更因此让使用者的忠诚度居高不下。

使用者除了 可以直接上Google的网站使用它们提供的服务之外,Google提供了这些网络服务的API配方,让许多厨师们都可以拿它来精心调制出美味的佳肴,随 厨师的创意提供千变万化的网络服务,让大家都可以享受Google这个网络服务平台,使得您设计的应用程序内容更加丰富完整。

轻轻松松跟Google打交道

在Google所提出的服务精神,希望每个因特网使用者都能享受它们所提供的任何服务,当然不只是信息人员。所以在与Google服务整合上,也让使用者不会感到有相当高的门坎,也能轻松上手。

过 去大家讨论的API通常会围绕在程序代码上打转,实在太严肃,会让读者们觉得那是要会写程序的人才会用到的东西,事实上在所有Google所提供的众多服 务 中,也提供了不需要撰写程序亦可以使用的整合界面,使用的方式都是相当轻松容易的,而且其强大的功能会让您直呼不可思议呢!

就目前Google所提供的网络服务API,依其功能型态及使用时机大致上分成三大类:
  • 强化网站功能(Enhance Your Web Site)
若您已经有自己的网站或部落格,可以透过这类功能来强化您网站的机制,以及提供完整的网站分析管理功能,让经营您的网站更省事,更简单。
  • 一般使用者功能(Reach Google Users)
主要针对Google所提供的Client软件,适用于一般使用者,提供可以安装在个人计算机桌面中的小工具(Gadget)。这些以XML为主要撰写语言,让您的日常工作可以透过桌面与Google之间的密切结合更有效率。
  • 提供整合界面(Integrate with Google)
这是针对进阶使用者,尤其是具有程序撰写能力的开发人员所提供的程序界面,您可以依您所擅长的程序语言(Java, Perl, Python, PHP, Ruby及.NET等),透过标准的传输协议及开放标准来进行实作。
接下来便针对一些热门的API功能进行介绍。

Google AJAX Search API

在 所有Google的Web服务中,最常被大家使用的便是其强大的搜寻引擎功能。在一个功能完整的网站里,搜寻机制已经是基本配备,在过去这样的功能需要导 入某特定搜寻引擎的软件套件,安装在自己的机器上才能达成的理想,现在仅仅需要在Google网站上申请一组API License Key,便可以享受Google既有的搜寻功能,而不需要在自己家里搞一套搜寻引擎主机。

若您对撰写程序有很大的学习障碍,Google提供了一种懒人机制,以增加HTML及JavaScript程序代码的嵌入方式,就可以将Google的搜寻机制免费安装到你的网站中,而且还结合了最酷炫的AJAX技术,这样的搜寻机制远比自己动手写程序来得容易多了。

从 图中您便可以很清楚看到,透过这样的整合,不只是提供网页内容的搜寻,连视讯、部落格、新闻、地图等内容都可以一并呈现。这些不同性质的内容是透过 Google Gadget组件组合而成,像是Video Gadget、Map Gadget等,模块化的结构让您可以弹性变动搜寻的结果,而在这个内嵌框架的里头所使用的AJAX呈现技术,让操作方式更加友善便利。

Google Web API

当 然,除了简单的嵌入整合方式,手痒的程序开发者也可以透过Google所提供的API来将它的服务整合到自己的应用程序中,Google针对搜寻机制提供 的API十分完整,您可以透过Web Services的业界标准界面让整个操作使用更加流畅,这便需要花点心思写点程序才有办法达到的,可以依照您的需求进行客制化,整合程度更高。

这 个函式库里包括了.NET(C#), VB及Java的范例程序、WSDL描述文件、API参考手册,及Java Doc文件。由于目前的Google Web API是透过Web Services的架构,所以只要依照WSDL描述档的定义,以SOAP的方式呼叫取得搜寻结果即可,所以只要程序语言本身可以撰写出SOAP Client就可以使用。若您是采用Java为主要开发语言,Google Web API提供已经包装好的SOAP Client链接库,只花几行程序即可撰写完成,相当容易。

为了让资源能有效分享给普罗大众,Google针对每个申请者有使用上的限 制。针对每个使用授权每日仅能呼叫1000次,而且每次的查询结果仅回传前1000笔,回传则以最多10笔为一个单位,而搜寻内容则不包括图片、新闻等其 他内容,仅限于网页数据,如此设计均是为及提升执行效能所做的考虑。

当然,这样的函式库是提供研究性质之使用,而未被授权于任何与商业有关之应用。在使用之前您最好还是详读一下授权合约内容。

Google Web Toolkit (GWT)

相 信您使用了一些Google所提供的服务后,会对它在网页上呈现的AJAX动态效果印象深刻,这样的设计对于使用者经验是有正面评价的。但对AJAX这样 的技术也许对许多开发人员仍然是陌生的技术,要能及时熟练上手也许会有困难,加上AJAX本身在开发测试过程中会有一定的困难度,故贴心的Google研 发团队便将其相关的技术以Java方式来呈现,提供更广泛的Java使用者也能开发出AJAX的应用程序。

您可以将GWT视为Java软 体框架,GWT具备了动态可重用的特性,开发者只需要引用GWT提供的链接库即可设出美美的AJAX UI画面,避开了在Javascript程序撰写时不易除错的问题,所有的开发方式可以依循原有的Java开发程序,结合您所熟悉的Java IDE工具(像是Eclipse)进行开发,同时也可以与JUnit整合,将单元测试自动化以提高效率。

GWT提供了Java-to- JavaScript Compiler,可以将您结合GWT所撰写的Java程序代码转译成具备AJAX功能的JavaScript内容。在开发过程中,您可以利用Host Mode对Java程序进行测试,而不需要每次都转成JavaScript才能测试最终产生的结果。而Web Mode则是将所有的Java程序转成JavaScript后实际以Web界面执行的方式。

在GWT里已经帮您解决了AJAX对不同浏览器的支持问题,您只需要针对UI版面配置进行设计即可。GWT提供了数种Panel应用在不同的版面配置,类似AWT中的Layout Manager功能,所以你会发觉程序的写法有点像在写Swing应用程序。

Google Map API

若 您的应用程序中需要提供地理信息,包括地理行政图、地区街道明细、以及路线规划建议等, Google Map服务是个不错的选择。它提供了世界各地的地理信息,同时可以选择地图、卫星鸟瞰图、以及混合显示等呈现方式。进一步它还可以提供您设定起迄点之间的 实际距离,以及最佳路线建议等。

若您只是使用呈现地图的单纯功能,那就太小看Google Map了。为了让地图能更具可读性,在上面加注信息是免不了的。Google Map API提供了Marker(以标识符号突显某特定的地点),InfoWindow(加注说明文字于讯息框中),及Polyline(以画线方式标示路线或 范围)等注记方式。其实在技术上的整合亦十分简单,此API亦是利用HTML与JavaScript内嵌方式来达成。

此服务整合常见的应用如房屋中介(提供查询对象的所在地理信息),求职讯息(提供征才企业的所在位置),旅游情报(提供旅游景点位置及重点地标),交通路况查询(提供两地之间最佳路径)等,让仅仅只是冰冷的地址文字加上更丰富的图像信息。

美 中不足的是,目前Google Map对于台湾地区的地图信息提供仅限于卫星影像,而行政地图的部份仍然未臻完整,对于想要提供区域性网站信息的内容则稍嫌不足。而类似的服务您也可以参 考由国人开发的UrMap你的地图网(www.urmap.com),此网站服务亦提供Web API可供呼叫,使用的组件架构也十分类似Google Map的设计方式,加上其提供的台湾地图街道行政区信息较为完整,比较符合国内网站的应用需求。

Google Toolbar API

对 于Google工具列应该大家都不陌生,其方便强大的功能已经成为浏览器的必备套件。在下载安装Google工具列之后,在工具列上预设的按钮功能也许仍 然无法满足您的需要,所以Google工具列提供了API让有兴趣自行设计工具列按钮的玩家们来使用,您也可以在Google 工具列上设计自订按钮功能,将一些常用的网址连结、RSS信息提供内容放到工具列上,在使用上更为便捷。

只需要撰写简单的XML档案,引用Google工具列特定的卷标语法,就可以制作出您想要的功能按钮。您也可以到Google工具列的按钮集页面中,搜寻别人已经提供的工具列按钮,也可以将您的精心杰作与其它Google工具列的使用者分享。

Google Desktop SDK

Google除了在网络服务上有着卓越的使用率外,对于个人桌面的市场亦野心勃勃,自行推出桌面搜寻工具后,连微软也不得不承认一向占有优势地位的桌面也感受到威胁,也推出类似的桌面搜寻工具,颇有相互较劲的意味。

新 一版的Google Desktop 4除了包含既有的桌面搜寻功能之外,还提供可以与网络服务直接连结的侧栏(Sidebar)功能,让您不需要开启网页浏览器也可以使用Google提供的 网络服务。侧栏可以让您下载安装许多与Google现有网络服务结合的Gadget小工具,像是实时新闻气象服务、Gmail个人邮件浏览、个人相簿、行 事历及待办事项等等。Google已经将Desktop视为网络服务的延伸平台,让它的服务更能深入个人桌面前端,结合得更密切。

当然在 Desktop平台方面,Google也提供了开发Gadget的SDK,让您可以设计出属于个人色彩的桌面小工具,成为侧栏的一部份。SDK支援 JavaScript, C, C++, C#, and/or VB.Net等技术,下载的SDK中也包含一可视化设计工具Gadget Designer。Google也鼓励那些网站内容提供者,利用Google Gadget SDK开发出自己网站专属的Gadget,并公布到Google的目录中供下载使用,进而让更多的使用者认识这些具有特色的网络服务,打响自己的知名度。

其它Google API

Google API种类繁多琳琅满目,以上仅针对较常被使用的部份进行介绍。如果您需要参考关于Google API的技术资料,您可以造访http://code.google.com,这儿包括了所有的API分类及相关说明,函式库也是从这儿下载使用。以下便 列出所有Google API的清单供大家参考:
Google API
说明
Google Account Authentication
针对Client软件(ClientLogin API)Web应用程序(AuthSub API)Google会员的身份认证功能。
AdSense API
提供与Google网络广告的整合,可以在您的网页上置入AdSense网页,利用Google播送平台发送网络广告并进行相关的广告管理功能。
AdWords API
提供广告客户自己的应用程序可直接对Google AdWords Server主机进行广告活动设定及管理。
Google AJAX Search API
提供Web Search功能以AJAX方式呈现,在您的网页上以嵌入方式提供Google搜寻功能。
Google Base Data API
提供对于Google Data的数据存取功能
Blogger Data API
Blogger服务整合,提供从您的网络服务对Blogger.com的内容进行编辑的功能。
Google Calendar Data API
Google Calendar服务整合,可以透过它进行事件更新,
Google Data APIs
提供针对Google Blogger, Google Base, Google Calendar等服务的数据交换功能。
Google Desktop SDK
提供建构在Google Desktop平台上的开发工具,应用程序可以直接利用它来开发出桌面小工具。
Google Earth KML
利用KML定义的地理信息来与Google Earth服务整合。
Google Gadgets API
用来开发Google Gadget小工具,Gadget又分成Universal GadgetDesktop Gadget,依您的需求使用不同的API来进行整合开发。
Gmail Atom Feeds
提供以Atom方式呈现Gmail信收件夹内容,将Gmail内容整合到您的网页中以利快速阅读。
Google Checkout API
Google提供的电子商务在线付款机制整合。
Google Web Toolkit
提供以Java链接库设计Web AJAX界面之功能。
Google Groups Feeds
提供搜寻网上论坛(Groups)并以AtomRSS呈现结果
Google Maps API
提供与Google Map服务整合,在您的网页中提供地图服务,并与网页数据密切结合,提供图文并茂的呈现方式。
Google News Feeds
提供搜寻新闻(News)并以AtomRSS呈现结果。
Google Related Links
取得Google搜寻结果后之类似网页的内容。
Google Search Appliance APIs
提供了Search Protocol, Feeds Protocol, Authorization Protocol三种数据传输协议
Google Search History Feeds
提供个人化搜寻历史记录之查询, 包括网页, 新闻等内容的搜寻记录。
Google Sitemaps
提供让Google搜寻能更精确的方式,提高您的网站在搜寻结果的曝光率。
Google Talk XMPP
提供与Google Talk之间讯息传递的通讯协议。在您的应用程序中需要提供与Google Talk相互联系或状态查询时可使用。
Google Toolbar API
提供Google工具列客制化按钮的功能。
Google SOAP Search API
透过Web Services方式呼叫,将Google的搜寻功能整合到自己的应用程序或网页中。
与开放源码社群的紧密结合

除了Google自己提供的工具套件及程序接口外,您也可以在开放源码社群中找到不少与Google服务有关的项目。为Google如痴如狂的使用者不在少数,这些开放源码提供了Google功能的延伸应用,也是您的不赖的另类选择。

若您是Mozilla FireFox的爱用者,除基本功能已经提供了Google的搜寻功能列之外,您还可以下载安装针对Google量身设计的扩充套件(Extension)来使用,像是CustomizeGoogle等。

结语

在Web 2.0的世界中,Google只是其中一个比较显著且知名的例子,其它像是Amazon, Delicious, Cocomment等许多网络服务平台,也都提供Web API的机制。单纯来自一种数据来源已经无法满足现今网络使用者的需求,未来的服务将是以软件混搭(Mashup)的概念(意即Web应用系统整合多种不 同的信息来源)来发展,信息的整合势必是未来的趋势。

转自:CSDN