RESTful架构

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

11-110RESTful架构理论课21-2什么是RESTREST(RepresentationalStateTransfer):表述性状态转移,分布式超媒体软件的一种架构风格。一套简单的设计原则、一种架构风格(或模式),不是一种具体的标准或架构。基于使用HTTP、URI等现有的广泛流行的协议和标准,并由几个核心抽象概念支撑。对Web的本质回归:一种真实描述Web的方式,不被特定时期的特定应用程序概念歪曲。提供区分良好实践和糟糕实践的途径:判断特定实践是否与Web架构一致。31-3资源URI规范(RFC2396)指出:“资源可以是任何有标示的东西”;“并非所有的资源都是通过网络能够获取的”。任何事物,只要有被引用的必要,就是一个资源(resource)。它可以是一个实物,也可以是一个抽象的概念。通常一个资源是某个可以存放在计算机上并体现为比特流的事物。在Web中,可以这样认为——资源是URI标示的东西。41-4表示资源和表示不是一码事。Web上获取的不是资源,而是资源的表示。对于给定的资源,可以有很多不同的表示。表示表示表示HTMLXMLFlashText资源表示标识符(URI)51-5状态在客户-服务端模式下,让客户端维护应用状态,并确保客户端向服务器发出的请求都包含理解请求所需的全部信息,而服务器不应该维护该状态。REST式解决方案是使用URI。每个概念上独立的资源都可使用单个URI,不希望通过Cookie或隐藏在有效负载的参数来提供额外信息。例:查看john在某网站2008-10-10的所有文档资料约束和风格Url表示资源CRUD操作状态表述转移无状态服务Http状态码、Cache控制ProxyREST核心是构架以资源为核心的模型71-7REST关键原则为所有资源定义ID将所有资源链接在一起使用标准方法资源多重表示无状态通信81-8为所有资源定义ID思考一下人们构建的系统,通常会找到一系列值得被标识的关键抽象。每个资源都应该是可标识的,都应该拥有一个明显的ID——在Web中,代表ID的统一概念是:URI。URI构成了一个全局命名空间,使用URI标识你的关键资源意味着它们获得了一个唯一、全局的ID。举例如下:://example.com/orders/2007/10/776654://example.com/processes/salary-increase-234注意:以上URI都是对一个Web中的资源的标识。91-9为所有资源定义ID://example.com/products?color=green注意:以上两个URI不是对一个资源的标识,而是对一类资源集合的标识。由于资源集合自身也是资源,也可以被标识。总结:无论Web中的资源代表单一数据项、数据项集合、虚拟亦或实际的对象还是计算结果等,都可以使用URI标识。101-10将所有资源链接在一起注意:以上xml片段中有两个超链接,通过超链接可以将更多的资源链接在于一起。使用URI表示链接的优势之处在于,链接可以指向由不同应用、不同服务器提供的资源——因为URI命名规范是全球标准,构成Web的所有资源都可以互相通信。总结:任何可能的情况下,使用链接指引可以被标识的资源111-11使用标准方法常用的HTTP标准方法是GET/POST。除此之外,标准方法集合中还有PUT、DELETE、HEAD、OPTIONS等八种方法121-12使用标准方法在实现REST原则的架构中,可以通过组成HTTP应用协议的通用接口访问服务程序注意:以上通过使用标准方法映射服务程序中的特定操作131-13使用标准方法总结:为使客户端程序能与Web中的资源相互协作,资源应该正确地实现默认的应用协议(即HTTP协议),并使用协议标准的GET、PUT、POST和DELETE方法。141-14资源多重表示HTTP采取的方式是允许数据处理和操作调用之间关系分离的。如果客户程序知道如何处理一种特定的数据格式,那就可以与所有提供这种表述格式的资源交互。举例如下:以上HTTP/GET请求的结果是xml格式表示的客户信息以上HTTP/GET请求的结果是Vcard格式表示的客户信息总结:尽可能针对不同的需求提供资源多重表示151-15无状态通信REST要求状态要么被放入资源状态中,要么保存在客户端上。服务器端不能保持除了单次请求之外的,任何与其通信的客户端的通信状态。这样做的最直接的理由就是可伸缩性——如果服务器需要保持客户端状态,那么大量的客户端交互会严重影响服务器的内存可用空间无状态约束使服务器的变化对客户端是不可见的,因为在两次连续的请求中,客户端并不依赖于同一台服务器。总结:要做到无状态通信往往需要一些重新设计——不能简单地将一些session状态绑缚在URI上。161-16什么是RESTfulRESTful:符合REST约束风格和原则的应用程序或设计就是RESTful举例:/emp/1HTTPGET查询id=1的emp/emp/1HTTPDELETE删除id=1的emp/emp/1HTTPPUT更新emp/emp/addHTTPPOST新增emp171-17Spring对RESTful的支持Spring是一个得到广泛应用的JavaEE框架,它在版本3以后就增加了对RESTful开发的支持。REST风格支持被无缝整合到Spring的MVC层,它可以很容易应用到使用Spring构建的应用中。SpringRESTful主要特性如下:@RequestMapping和@PathVariable注解,支持资源标识和URL映射ContentNegotiatingViewResolver支持为不同的MIME/内容类型使用不同的表示方式使用相似的编程模型无缝地整合到原始的MVC层181-18Spring对RESTful的支持利用@RequestMapping注解指定要处理请求的URI模板和HTTP请求的动作类型利用@PathVariable注解将URI请求模板中的变量映射到处理方法参数上举例:@RequestMapping(value=/{id},method=RequestMethod.GET)publicStringtoUpdate(@PathVariable(id)Integerid,Modelmodel){//处理代码}191-19@RequestMapping应用格式@RequestMapping(value=“/{id}”,method=RequestMethod.GET)//查询操作@RequestMapping(value=“/{id}”,method=RequestMethod.POST)//新增操作@RequestMapping(value=“/{id}”,method=RequestMethod.DELETE)//删除操作@RequestMapping(value=“/{id}”,method=RequestMethod.PUT)//更新操作注意:form标签不支持提交DELETE和PUT请求,解决方案如下:1)利用SpringMVC生成一个hidden的_method=put,并于web.xml中的HiddenHttpMethodFilter配合使用,在服务端将post请求改为put请求2)可以利用AJAX在客户端发出PUT、DELETE动作的请求201-20总结REST的资源、表示和状态的概念REST关键原则RESTful概念Spring对RESTful支持

1 / 20
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功