《RESTFUL API 设计开发.ppt》由会员分享,可在线阅读,更多相关《RESTFUL API 设计开发.ppt(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Twitter:hooraceEmail:Blog:1.0beta0目录什么是RESTRESTFULAPI介绍实例一些资源一些数据在这个流量=金钱的时代为什么要了解REST:API数据角度从数据上来看:电子商务的程序员不了解从数据上来看:电子商务的程序员不了解REST API可以吗?可以吗?为什么要了解REST:同行数据角度http:/ eCommerceVS Taobao TopREST +SOAP(85:15)RESTHttp协议你知道多少?1:http的请求方法有多少?2:请求包头你知道多少?3:返回码呢?什么是RESTRepresentational State Transfer(表述
2、性状态转移),简称REST,来自Roy Fielding的博士论文:Architectural Styles and the Design of Network-based Software Architectures(架构风格与基于网络的软件架构设计)Roy Fielding是Day Software公司的首席科学家,Apache软件基金会的合作创始人,在美国加洲大学欧文分校获得博士学位,HTTP、URI等Web标准的主要设计者什么是REST(续)REST从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表征。获得这些表征致使这些应用程序转变了其状
3、态。随着不断获取资源的表征,客户端应用不断地在转变着其状态,所谓表征状态转移(RepresentationalStateTransfer)。REST是一种的分布式应用架构风格,HTTP1.1是基于REST架构风格设计的。其他分布式引用架构风格1:分布式对象(RMI/EJB/HSF)2:远程过程调用(SOAP/XML-RPC/JSON-RPC/HESSION)指导思想:REST的架构约束1.客户端-服务器2.无状态3.缓存4.统一接口5.分层系统6.按需代码(可选约束,我没搞懂)指导思想(续):REST的五条关键原则1.为所有“事物”定义ID(URI)2.将所有事物链接在一起3.使用标准方法4.
4、资源多重表述5.无状态通信为什么要基于API开发1.WEB是开放的时代,twitter的30W个客户端构造了操作壁垒,让google,facebook无法追赶;2.API让web,手机客户端,桌面多种操作成为可能,程序员分工更加明确,切降低了开发成本;3.软件开发依赖解耦4.让编程语言发挥各自的优势。REST导致的变化RESTFUL API一种基于http协议和rest架构策略的一种简单web service,包含以下特征:1.Web服务的基本URI,如http:/ API中的典型应用RESOURCE GETPOSTPUTDELETEPATCHhttp:/ RESTFUL API然后配置url
5、s=(/item/(.*),item)。好吧,我承认这是我见过的最简单实现restful API的框架!详细地址:http:/ Java程序员可以使用一套固定的接口来开发 REST应用。特征:l 使用 POJO编程模型l 基于Annotation的配置l 集成了 JAXB,JAX-RS提供的标注将资源类lPath,标注资源类或方法的相对路径lGET,PUT,POST,DELETE,标注方法是用的HTTP请求的类型lProduces,标注返回的MIME媒体类型lConsumes,标注可接受请求的MIME媒体类型lPathParam,QueryParam,HeaderParam,CookiePar
6、am,MatrixParam,FormParam,分别标注方法的参数来自于HTTP请求的不同位置,例如PathParam来自于URL的路径,QueryParam来自于URL的查询参数,HeaderParam来自于HTTP请求的头信息,CookieParam来自于HTTP请求的Cookie。代码示例GETProduces(MediaType.APPLICATION_JSON)Path(/book/id)publicBookgetBook(PathParam(id)Stringid)returnnewBook(huhu,huhu);PUTPath(/book/name)publicvoidupda
7、teBook(PathParam(name)PathSegmentbook)Iteratorit=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;访问示例GEThttps:/