您好,欢迎访问三七文档
“24HourService,Day&Night”Rest框架及实践“24HourService,Day&Night”内容概要Rest概述Rest的设计概念及准则Rest的优点Rest的服务框架Restlet2.0“24HourService,Day&Night”了解HTTPHTTP协议的形象理解:信封格式有严格标准,并不关心里面内容。客户端服务器响应请求“24HourService,Day&Night”HTTP的请求方法(method):表示客户端希望服务器如何处理该信封,有GET、POST、PUT、DELETE、HEAD、OPTION、TRACE和CONNECT八个方法;路径(path):请求链接里主机名后面部分,即信封上的地址;请求报头(requestheaders):一组起元数据作用的键值对,类似信封上贴的标签信息。HTTP除定义了一套标准报头外,程序也可以自己定义报头;实体主体(entity-body):也称作文档或表示,即信封里的文档。一般情况下,请求实体主体可为空。“24HourService,Day&Night”HTTP报头标准报头Host、User-Agent、Accept、Allow、Accept-Charset、Accept-Encoding、Accept-Language、Range、If-Modified-Since、If-None-Match、AuthorizationContent-Type、Content-Length、Content-Range、Location、Content-MD5、Content-Location、Content-Encoding、Content-Language、Accept-Ranges、Expires、Last-Modified、ETag、Date、Cache-Control非标准报头Cookie、Set-Cookie、X-WSSE自定义报头不重新发明已存在的报头不将应该放在实体主体里的信息放进报头命名遵循惯例,名称以“X-”开头“24HourService,Day&Night”HTTP响应代码状态码(3位数字)分类1xx:通知——仅在与HTTP服务器沟通时使用2xx:成功——成功收到、理解和接受动作•200(“OK”)、201(“Created”)、204(“NoContent”)3xx:重定向——为完成请求,必须进一步采取措施•301(“MovedPermanently”)、303(“SeeOther”)、304(“NotModified”)、307(“TemporaryRedirect”)4xx:客户端错误——请求包含错误的语法或不能完成•400(“BadRequest”)、401(“Unauthorized”)、403(“Forbidden”)、404(“NotFound”)、405(“MethodNotAllowed”)、406(“NotAcceptable”)、409(“Conflict”)、410(“Gone”)5xx:服务器端错误——服务器不能完成明显合理的请求•500(“InternalServerError”)、503(“ServiceUnavailable”)“24HourService,Day&Night”URI解析URI(UniformResourceIdentifier):通用资源标识符,它被设计充当可用位置和持久名称。可为定位器、名称,或两者兼具,取决于标识符分配中的持久性和命名机构对其关注程度。不论在哪里都可以对URI作出一致的解释,通常没有必要刻意区分它们。语法规则:大致指向一个层次空间,协议是树根,从左往右每部分是前部分的分支。•例:=张三#photo方案域名路径查询片段路径:并非一定要采用层次机构,可根据应用程序模型定制路径结构。•例:用户名标记查询:URI中非层次部分,通常后台数据库应用程序要使用它。片段:用于标示下一级资源,只在客户端有效。浏览器HTML中常对应页面锚点。“24HourService,Day&Night”URI空间的实现及维护“优秀的URI不会改变”——TimBerners-Lee最大限度地延长URI生命周期的保障:1.独立于技术2.层次结构和集合3.末尾的斜杠和位置无关最大限度降低修改URI造成的负面影响:1.永久性重定向资源2.暂时重定向资源3.不应该使用的重定向方法4.服务器端重定向“24HourService,Day&Night”什么是Rest(RepresentationalStateTransfer)中文俗称:表述性状态转移,是分布式网络系统的一种设计模式,源自2000年RoyThomasFielding的博士论文;Rest不是标准规范,是一种设计模式;针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可扩展性。Rest使用标准:HTTPURLXML/HTML/GIF/JPEG/etc.(ResourceRepresentations)text/xml,text/html,image/gif,image/jpeg,etc.(ResourceTypes,MIMETypes)“24HourService,Day&Night”论文摘要堪称Web架构设计领域的“圣经”中文版下载“24HourService,Day&Night”为什么叫RestResourceClient客户端通过一个URL来请求资源,返回的并不是资源,而是资源的一种特定表现形式(该图的表现形式是HTML文件)。“24HourService,Day&Night”Rest的WebService设计方式WebServerHTTPPOSTURL3Item(HTML/XML)HTTPGETrequestURL1HTTPresponseURLtosubmittedItemItemsListItemInfoAddItemHTTPresponseResponse(HTML/XMLdoc)HTTPresponseResponse(HTML/XMLdoc)HTTPGETrequestURL2“24HourService,Day&Night”Rest资源设计为每一个请求都创建一个资源通过URL来识别资源返回的数据格式(XML):?xmlversion=1.0?ItemsItemid=“1href==“2href==“3href==“4href=“24HourService,Day&Night”Rest的设计概念及准则网络上的所有事物都被抽象为资源(Resource);每个资源对应一个唯一的资源标识符(resourceidentifier);通过通用的连接器接口(genericconnectorinterface)对资源进行操作;对资源的操作都是无状态性的(Stateless);对资源的各种操作都不会改变资源标识。“24HourService,Day&Night”Rest的优点可以利用缓存Cache来提高响应速度通讯本身的无状态性可以让不同的服务器处理一系列请求中的不同请求,提高服务器的扩展性浏览器即可做客户端,简化软件开发的需求相对于其他叠加的HTTP协议之上的机制,Rest的软件依赖性更小不需要额外的资源发现机制在软件技术演进中的长期的兼容性更好“24HourService,Day&Night”REST式服务框架Restlet2.0“24HourService,Day&Night”轻量级框架RestletREST系统的轻量级解决方案,建立REST概念与Java类之间的映射。不区分客户端与服务端的差异,统用一套APIs。包括RestletAPI和NoeliosRestletEngine(NRE)两部分,NRE是对API的一种参考实现。提供Servlet适配器,Restlet应用可部署到Servlet容器,并分发URI请求。隐藏低层信息(原始HTTP报头),简化请求映射。引入Component、Applications和VirtualHosts等概念,便利系统整合、应用部署与测试。17“24HourService,Day&Night”Restlet的层次结构18“24HourService,Day&Night”Restlet系统设计依据ROA(面向资源的架构)设计原则,对资源类和URIs的设计举例社会性书签应用的Restlet架构19“24HourService,Day&Night”Restlet对资源请求的处理在Restlet框架中,服务器连接的标准响应由Resource的实例对象最终处理。一个Resource负责声明支持的表现方式列表和实现你想要实现的Rest方法。GET获取资源PUT更新资源POST添加资源DELETE删除资源每一个请求的响应都由一个专门的Resource实例处理,所以不必担心这些方法的线程安全。20“24HourService,Day&Night”部署应用到Servlet容器(1)正常创建Servlet应用,修改Web.xml,用Restlet的适配器接受请求21“24HourService,Day&Night”部署应用到Servlet容器(2)Application的createInboundRoot方法中建立路由,将资源类与URI模板之间建立起清晰而直观的映射关系22“24HourService,Day&Night”部署应用到Servlet容器(3)实现继承自Resource的资源类,在构造方法中依据URI参数决定表现形式,并在表示方法中显示相应的内容23“24HourService,Day&Night”部署应用到Servlet容器(4)获取资源24“24HourService,Day&Night”部署应用到Servlet容器(5)添加一个资源25“24HourService,Day&Night”部署应用到Servlet容器(6)更新一个资源26“24HourService,Day&Night”部署应用到Servlet容器(7)删除一个资源27“24HourService,Day&Night”作为单独的Java应用运行(1)创建一个主类,建立一个新的HTTP服务器监听端口,并委托所有的请求给指定Restlet应用“24HourService,Day&Night”作为单独的Java应用运行(2)“24HourService,Day&Night”相关资料“24HourService,Day&Night”谢谢!
本文标题:Rest框架及实践
链接地址:https://www.777doc.com/doc-3253407 .html