OpenAPI2

57 %
43 %
Information about OpenAPI2
Science-Technology
api

Published on December 9, 2008

Author: cenwenchu

Source: authorstream.com

Slide 1: 1 OPEN API & SIP 文初 Email: wenchu.cenwc@alibaba-inc.com Blog : http://blog.csdn.net/cenwenchu79 Code: http://rest-demo.googlecode.com/files/demostore.rar 主题 : 主题 什么是Open API ? Open API能够带来什么? Open API当前发展情况 Open API基础 Open API实践 服务集成平台(SIP) Open API发展趋势 一点感想 2 什么是Open API : 什么是Open API 一系列技术可以使得网站之间信息互通 Open Open 资源类型不限(Data ,Compute capability , Storage) Open 调用者不限(应用类型,实现技术) Open 展现和使用方式不限(UI Mash up,Data Merge) API 接口,屏蔽实现 3 什么是Open API : 什么是Open API Open API所涉及到的角色 4 Open API能够带来什么? : Open API能够带来什么? 用户 同质竞争提高服务质量 服务流程串联带来的便利 数据关联性对潜在需求的满足 贡献与参与 5 Open API能够带来什么? : Open API能够带来什么? 开发者 创新:丰富的资源(数据,服务等)带来无限想象空间 快速: 轻量级的开发模式 二次开发的积累效应 轻量级的产品化流程 盈利模式: 长尾效应 SAAS模式 服务层分成 6 Open API能够带来什么? : Open API能够带来什么? 服务提供商 资源价值最大化 更大的用户群 更广泛的商业模式 更多的合作伙伴 数据互通挖掘潜在需求 网站结构成熟度提升 业务系统模块化 资源结构关系合理化 服务性能、安全、质量的提高 7 Open API能够带来什么? : Open API能够带来什么? 8 Open API能够带来什么? : Open API能够带来什么? 9 Open API当前发展情况 : Open API当前发展情况 10 Google Map: API本身特色+成熟的框架 Flickr:API专业化、Tag YouTube:视频资源,符合Gdata规范结合搜索展现业务 Amazon:业务类型特殊以及配套解决方案(EC2,S3,SQS,SimpleDB作为Framework; FPS,DevPay作为支付,Alexa Web Search作为搜索) Open API当前发展情况 : Open API当前发展情况 国内: 豆瓣,各个SNS网站,淘宝,雅虎中国,搜狐 数据型服务占多数,API种类相对较为单一 服务成熟度处于初级阶段(稳定性,易用性) 安全流程大多参照国外OAuth的方式 数据格式大多采用RSS和Atom的扩展 Open API 基础 : Open API 基础 Open API的形态 RPC http://api.flickr.com/services/rest/?method=flickr.test.echo&name=value RPC形态其实就是Web Service的一种延续,只是少了繁重的解析、安全规范等。 服务总入口、服务资源定位参数、业务参数。 REST http://www.google.com/calendar/feeds/wenchu.cenwc@alibaba-inc.com/allcalendars/full 服务地址就是资源定位地址,HTTP协议作为服务协议而非传输协议 12 Open API 基础 : Open API 基础 两种形态的比较 无优劣 开放性:REST更容易Merge。 接口设计:RPC更接近传统设计模式,容易被开发者接受,同时也便于传统应用的接入和使用。 扩展和复用:REST对操作接口抽象度更高,对业务扩展和复用有利。 安全:REST对安全设计要求高,控制粒度要求更加细化。 服务类型:REST适合简单的数据类服务,RPC适合复杂的非资源型操作类服务。 对已有系统改造成本:RPC改造成本低,REST对系统数据结构以及流程设计要求较高。 13 Open API 基础 : Open API 基础 Open API的类型 数据型(SNS Website ,Taobao) 应用以及其他类型服务的基础 商业价值依赖于开发者能力而定 服务型(Google Map , Flickr) 技术特点突出 结合自身数据资源或者外部数据资源产生商业价值 能力型(Amazon S3 , EC2) 技术门槛高 可以成为上层应用的基础设施 有很强的商业价值 14 Open API 基础 : Open API 基础 Open API数据展现方式 RSS, Atom 标准REST的数据操作和展现方式 Ajax/JavaScript, Widget 服务框架化,体系化的集成手段 JSON 平台、语言无关性对象传输的轻量级协议 XML 传统的数据承载模式 PHP 结合语言特点的展现方式 SOAP 可利用Web Service成熟的安全,转发协议。 15 Open API 基础 : Open API 基础 Open API的安全 三类基础授权 16 Open API 基础 : Open API 基础 OAuth授权流程与传统授权流程 授权范围 OAuth授权可细化到对服务或者对具体资源的控制 传统授权流程无法控制授权范围 授权时效性 OAuth授权可以控制授权时效 传统授权流程无法控制时效性 授权安全性 OAuth仅仅保存的是认证存根,离开应用不具有可用性 传统授权流程保存的是用户的真实登陆信息,一旦泄露对用户信息和资源将无法保证其安全性 17 Open API 基础 : Open API 基础 18 Open API 基础 : Open API 基础 OAuth流程的缺点 交互流程过多 应用开发者对Token的维护成本高(有效期维护) 用户对于Token最终使用范围无法控制(授权范围和最终访问内容粒度不匹配) 无法满足多种服务级别的需要(当前支持session级别,同是也需要支持request级别) Token作为参数传递导致安全级别降低。 19 Open API的实践 : Open API的实践 免授权和应用授权类服务的开发 @Test public void testYahooSearch()//Yahoo搜索服务测试 { //Yahoo搜索服务地址,通过切换searchengine,searchtype来改变搜索资源的不同,支持图片,网页,新闻,视频 String yahoo_search_service = "http://search.yahooapis.com/{searchengine}/{version}/{searchtype}"; Map<String,Object> params = new HashMap<String,Object>();//服务调用传入的参数 params.put("appid", yahoo_appkey); //申请的应用身份Id params.put("query","冰激凌 +巧克力 -水果");//搜索内容,搜索冰淇凌,需要有巧克力但不要水果 //ImageSearchService,图片类搜索,TestUtil是一个基础工具方法,这里就不贴了,详细地可以参看Google code的源码 String result = TestUtil.sendRequest(yahoo_search_service .replace("{searchengine}", "ImageSearchService").replace("{version}", "V1").replace("{searchtype}", "imageSearch") ,params,null,TestUtil.HTTP_METHOD_GET,null,"UTF-8",null); System.out.println(result); …… } 20 Open API的实践 : Open API的实践 //这部分将在后面的Mash-up范例中使用,是通过Boss搜索缩略图片 public static List<String> bossSearchService() throws XPathExpressionException, ParserConfigurationException, SAXException, IOException { …… String boss_image_service = "http://boss.yahooapis.com/ysearch/images/v1/";//服务地址 //搜索资源关键字编码,关于编码特别要注意,很多时候使用Open API出现问题就是因为中文,导致签名或者使用出现问题 String resource = URLEncoder.encode("\"ice cream\" -apple +Chocolate","UTF-8"); …… String result = TestUtil.sendRequest(new StringBuffer().append(boss_image_service).append(resource).toString() ,params,null,TestUtil.HTTP_METHOD_GET,null,"UTF-8",null); urls = processXmlResult(result); //采用XPath来解析返回结果,当前通常解析返回结果的方式就采用XPath,XQuery,如果是RSS方式通常会采用一些第三方的开源项目,类似于ROME,详细内容可以参看Google code的源码 return urls; } 21 Open API的实践 : Open API的实践 testYahooSearch()的运行结果如下: <?xml version="1.0" encoding="UTF-8"?> <ResultSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:yahoo:srchmi" xsi:schemaLocation="urn:yahoo:srchmi http://api.search.yahoo.com/ImageSearchService/V1/ImageSearchResponse.xsd" totalResultsAvailable="171" totalResultsReturned="10" firstResultPosition="1">//记录数信息 <Result> <Title>1194498494726_77635.jpg</Title> <Summary>]冰激凌2.5万美元1份 ……</Summary> <Url>http://news.tom.com/uimg/2007/11/8/chenhong/1194498494726_77635.jpg</Url> …… </Result> <Result>……</Result> …… </ResultSet> 测试运行结果是搜索结果集的xml描述,可以根据ImageSearchResponse.xsd来解析返回的内容。   testBossSearch()运行的结果如下: nextpage Url : /ysearch/images/v1/%22ice%20cream%22%20-apple%20%20Chocolate?count=10&dimensions=small&appid=nkl8kwzV34FPuapz_cGP3QiOU7jvOZB2kuWEBq0CoGBvRfirCtgnIMP6mVYNHRuFWBHn&format=xml&start=10 search result 1 url : http://www.soya.be/pictures/market/chocolate-ice-cream.jpg search result 2 url : http://www.icecreampark.com/images/Chocolate%20ice%20cream%202.jpg …… 测试运行的结果是已经经过XPath初步处理的结果,提供了下一页的入口URL地址,以及本次搜索出来的结果集。 22 Open API的实践 : Open API的实践 用户授权类服务的开发(Flickr API) @SuppressWarnings("unchecked")//认证和授权流程,后面正式测试代码中会使用 protected String auth() throws IOException { …… logicmap.put("method", "flickr.auth.getFrob");//授权服务名称作为参数 logicmap.put("api_key", flickr_appkey); //置入应用ID //发起服务请求,获取授权Token result = flickrCommonServiceRequest(TestUtil.HTTP_METHOD_GET,flickr_service,logicmap,null); //分析返回结果获取授权Token frob = TestUtil.getTagContent(result,"<frob>","</frob>"); …… //根据服务地址,apikey,授权Token,操作权限和参数签名,拼装用户授权URL …… //模拟弹出IE,展现给用户授权登录的界面 String cmd =new StringBuilder("rundll32 url.dll,FileProtocolHandler ").append(authStr).toString(); Runtime.getRuntime().exec(cmd); …… //当用户在弹出IE中授权完成以后,需要在控制台中输入ok回车表示确认,程序才能继续 String passcommand = TestUtil.readLineFromConsole(); …… …… result = flickrCommonServiceRequest(TestUtil.HTTP_METHOD_GET,flickr_service,logicmap,null); token = TestUtil.getTagContent(result,"<token>","</token>");//获得用户Token return token; } 23 Open API的实践 : Open API的实践 @Test//测试上传图片 public void uploadPhotoTest() throws IOException { String token = auth();//授权 if (token != null) { //访问个人上传图片各种状态信息,可以不作,这里只是确认还有多少图片可以上传 //logicmap中放入请求的方法名,apiKey,token String result = flickrCommonServiceRequest(TestUtil.HTTP_METHOD_GET, flickr_service,logicmap,null); …… //输入需要上传图片的地址,可以是本地的图片也可以是网络图片 System.out.println("please input photo location you want to upload!"); String file = TestUtil.readLineFromConsole(); …… //logicmap中是必要的业务参数,files是需要上传的文件地址 result = flickrCommonServiceRequest(TestUtil.HTTP_METHOD_POST, flickr_uploadphoto_service,logicmap,files); //如果上传成功将会获得图片id String photoid = TestUtil.getTagContent(result,"<photoid>","</photoid>"); //根据返回的图片id拼装成资源访问地址, Flickr对于图片内容的定位还是采用标准的REST风格,地址如下: http://www.flickr.com/photos/用户名/photoid …… } 24 Open API的实践 : Open API的实践 25 Open API的实践 : Open API的实践 26 Open API的实践 : Open API的实践 27 Open API的实践 : Open API的实践 28 Open API的实践 : Open API的实践 Mash up (Taobao API + Yahoo Boss API) 淘宝更新商品信息+Boss搜索相关图片 29 Open API的实践 : Open API的实践 30 Open API的实践 : Open API的实践 31 Open API的实践 : Open API的实践 Mash up(Google Gadget) 服务集成平台(SIP) : 服务集成平台(SIP) 服务集成平台(SIP)的角色和作用 33 Open API的实践 : Open API的实践 服务集成平台(SIP) : 服务集成平台(SIP) ISV(独立软件开发商)最关心什么? 服务资源是否丰富,关系创新。 服务质量是否有保证,关系应用商业化最基本需求. 开发集成是否便利,关系着开发、维护成本。 35 服务集成平台(SIP) : 服务集成平台(SIP) ISP(独立服务提供商)最关心什么? 服务安全性。如果损害到自身或者用户利益,则就失去了原来开放的初衷。 是否有足够多的应用开发者使用服务。 服务的非业务性需求是否可以满足。(服务监控告警,计费,统计分析等) 36 服务集成平台(SIP) : 服务集成平台(SIP) SIP是连接ISV和ISP的“桥梁”。 丰富的ISV资源以及丰富的ISP资源。 统一安全标准和多种控制策略,即保证了ISP的安全,又能够让ISV开发起来方便。 让ISP专注于业务服务的开发,提升服务质量,对非业务性的需求,如安全,服务监控预警,日志分析统计,计费等提供一揽子解决方案。 37 服务集成平台(SIP) : 服务集成平台(SIP) 服务集成平台(SIP) : 服务集成平台(SIP) 服务集成平台(SIP) : 服务集成平台(SIP) Open API发展趋势 : Open API发展趋势 数据集成到流程集成 GData :数据规范化 Pipes:基于数据规范化的流程定制 OpenID到Connect 服务集成层次化,框架化 Data  Service  UI Service SDK  JavaScript FrameWork Widgets Open API发展趋势 : Open API发展趋势 Open API发展趋势 : Open API发展趋势 一点感想 : 一点感想 机遇和挑战:ISV、ISP、SIP 多一些理解和包容 不断的学习,思考,创新 站在别人的肩膀上看未来

Add a comment

Comments

http://www.qcfec.com/Parties.htm | 11/01/15
Wholeslae youth stitched nfl jerseys for cheap, here to get free shipping. Sell high quality low price Cheap Jerseys. http://www.qcfec.com/Parties.html http://www.qcfec.com/Parties.html

Related presentations

Related pages

Twitter Developers

The Twitter platform connects your website or application with the worldwide conversation happening on Twitter.
Read more

ASP.NET Web API | The ASP.NET Site

Learn About ASP.NET Web API. ASP.NET Web API is a framework that makes it easy to build HTTP services that reach a broad range of clients, including ...
Read more

API

The American Petroleum Institute (API) is the only national trade association that represents all aspects of America’s oil and natural gas industry.
Read more

Download Open XML SDK 2.5 for Microsoft Office from ...

The Open XML SDK 2.5 simplifies the task of manipulating Open XML packages and the underlying Open XML schema elements within a package.
Read more

Graph API - Documentation - Facebook for Developers

The Graph API is the primary way that data is retrieved from or posted to Facebook.
Read more

Download Open XML SDK 2.0 for Microsoft Office from ...

The Open XML SDK 2.0 Productivity Tool for Microsoft Office provides a number of features designed to improve your productivity and accelerate your ...
Read more

REST APIs | Twitter Developers

REST APIs. The REST APIs provide programmatic access to read and write Twitter data. Author a new Tweet, read author profile and follower data, and more.
Read more

Google API Console

Google API Console lets you discover and use Google APIs, such as Google Maps and YouTube.
Read more

API Overview - The Movie Database (TMDb)

The Movie Database (TMDb) is a popular, user editable database for movies and TV shows.
Read more

JSON API — A specification for building APIs in JSON

To get started with JSON API, check out documentation for the base specification. Extensions. JSON API has experimental support for extensions.
Read more