RESTFUL-API-设计开发课件_第1页
RESTFUL-API-设计开发课件_第2页
RESTFUL-API-设计开发课件_第3页
RESTFUL-API-设计开发课件_第4页
RESTFUL-API-设计开发课件_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

RESTFULAPI设计开发Twitter :hooraceEmail :longtask@Blog :1.0beta01.目录什么是RESTRESTFULAPI介绍实例一些资源一些数据2.在这个流量=金钱的时代3.为什么要了解REST:API数据角度从数据上来看:电子商务的程序员不了解RESTAPI可以吗?4.为什么要了解REST:同行数据角度/apis/directory/1?sort=mashups搞电子商务的,不知道亚马逊联盟是不是觉得有点面子挂不住?5.为什么要了解REST:AmazoneCommerceVSTaobaoTopREST +SOAP(85:15)REST6.Http协议你知道多少?1:http的请求方法有多少?2:请求包头你知道多少?3:返回码呢?7.什么是RESTRepresentationalStateTransfer(表述性状态转移),简称REST,来自RoyFielding的博士论文:《ArchitecturalStylesandtheDesignofNetwork-basedSoftwareArchitectures》(《架构风格与基于网络的软件架构设计》)RoyFielding是DaySoftware公司的首席科学家,Apache软件基金会的合作创始人,在美国加洲大学欧文分校获得博士学位,HTTP、URI等Web标准的主要设计者8.什么是REST(续)REST从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表征。获得这些表征致使这些应用程序转变了其状态。随着不断获取资源的表征,客户端应用不断地在转变着其状态,所谓表征状态转移(RepresentationalStateTransfer)。REST是一种的分布式应用架构风格,HTTP1.1是基于REST架构风格设计的。其他分布式引用架构风格1:分布式对象(RMI/EJB/HSF)2:远程过程调用(SOAP/XML-RPC/JSON-RPC/HESSION)9.指导思想:REST的架构约束客户端-服务器无状态缓存统一接口分层系统按需代码(可选约束,我没搞懂)10.指导思想(续):REST的五条关键原则为所有“事物”定义ID(URI)将所有事物链接在一起使用标准方法资源多重表述无状态通信11.为什么要基于API开发WEB是开放的时代,twitter的30W个客户端构造了操作壁垒,让google,facebook无法追赶;API让web,手机客户端,桌面多种操作成为可能,程序员分工更加明确,切降低了开发成本;软件开发依赖解耦让编程语言发挥各自的优势。12.REST导致的变化13.RESTFULAPI一种基于http协议和rest架构策略的一种简单webservice,包含以下特征:14.HTTP在RESTFULAPI中的典型应用RESOURCEGETPOSTPUTDELETEPATCH

/feed/review/latestselectinsertupdatedeletePartialupdateGET/PUT/DELETE/PATCH方法:幂等的,POST是不幂等的POST/PUT/DELETE/PATCH方法:不安全的,GET是安全的15.简单实例:Python框架Web.py的实现RESTFULAPI然后配置urls=

('/item/(.*)',‘item')。好吧,我承认这是我见过的最简单实现restfulAPI的框架!详细地址:/2008/09/20/getting-restful-with-webpy/16.思考1:其实都可以GET实现,都用GET方式的害处?2:POST也可以实现很多功能,POST方式的害处?3:Servlet规范JSR154,JSR315定义了哪些方法?17.JavaAPIforRESTfulWebServices:JSR-311JSR-311(JAX-RS:JavaAPIforRESTfulWebServices)旨在定义一个统一的规范,使得Java程序员可以使用一套固定的接口来开发REST应用。特征:使用POJO编程模型基于Annotation的配置集成了JAXB,18.JAX-RS提供的标注将资源类@Path,标注资源类或方法的相对路径@GET,@PUT,@POST,@DELETE,标注方法是用的HTTP请求的类型@Produces,标注返回的MIME媒体类型@Consumes,标注可接受请求的MIME媒体类型@PathParam,@QueryParam,@HeaderParam,@CookieParam,@MatrixParam,@FormParam,分别标注方法的参数来自于HTTP请求的不同位置,例如@PathParam来自于URL的路径,@QueryParam来自于URL的查询参数,@HeaderParam来自于HTTP请求的头信息,@CookieParam来自于HTTP请求的Cookie。19.代码示例@GET@Produces({MediaType.APPLICATION_JSON})@Path("/book/{id}")publicBookgetBook(@PathParam("id")Stringid){returnnewBook("huhu","huhu");}@PUT@Path("/book/{name}")publicvoidupdateBook(@PathParam("name")PathSegmentbook){Iterator<Book>it=books.iterator();Stringname=String.valueOf(book.getMatrixParameters().get("name"));Stringcontent=String.valueOf(book.getMatrixParameters().get("content"));while(it.hasNext()){Bookbooktmp=it.next();if(name.equals(booktmp.getName())){booktmp.setContent(content);break;}}}20.访问示例GET/calendar/feeds/userID/private-magicCookie/fullPOST/calendar/feeds/default/private/fullPUT/calendar/feeds/default/owncalendars/full/calendarIDDELETE/calendar/feeds/default/owncalendars/full/calendarIDPATCH/calendar/feeds/default/private/full/eventID21.JAX-RS的实现ApacheCXF,开源的Web服务框架。Jersey,由Sun提供的JAX-RS的参考实现。RESTEasy,JBoss的实现。Restlet,由JeromeLouvel和DavePawson开发,是最早的REST框架,先于JAX-RS出现题外话:Spring3.0直接支持restful风格的编码了。22.您选择框架要考虑的产品成熟度,是否有成熟团队,社区文档是否齐全和常见框架的集成(例如:Spirng)对流行协议的支持(Atom,Oauth)配置的简易程度性能是否容易上手……23.前置URI24.流程25.授权方式简单的session+secret_key的模式oauth自定义的其他方式26.开始阶段JAVA框架选择JSR311的实现文档齐全支持spring,oauth,atom支持jetty的集成配置有点郁闷27.考虑cache:twitter示例28.考虑cache:twitter示例(续)29.返回数据1:xml序列化耗时返回的数据把显得有点大很想说的是twitterstreamapi抛弃了xml2:Json简单清晰数据包小提示:不要json-lib,选择jackson来序列化josnTaobao,amazon都返回json,xml2种格式3:atomAtom供稿格式(AtomSyndicationFormat)是用于网站消息来源,基于XML的文档格式。GoogleDataAPI和豆瓣都是基于Atom格式的返回4:RSS30.测试框架自带的client的API测试C

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论