REST|RESTful初步认识

       工做中要用到jersey来实现restful风格的webservice。对于webservice另外一定的认知(可以以为是一种服务,远程调用的组件),但是对于restful笔者根本就木有了解过,restful到底是什么,是一种技术?规范?因而笔者花了些时间查询了下资料,看了下书,总算有点眉目了。java

什么是REST

       REST(REresentation State Transfer:表象化状态转变)描写叙述了一个架构样式的网络系统,它是一种架构风格、设计风格而不是标准、技术,只不过提供了一组设计原则和约束条件(而且并不强制)。Restful式的架构主要用于client和server交互类的软件,基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。现在来讲,REST/RESTful都是指的RESTful Web Service。web

REST标准

       REST是面向资源的架构风格,一般基于使用HTTP,URI,和XML以及HTML这些现有的普遍流行的协议和标准。在你的应用系统管理之下的不论什么事物都将被以为是一个资源(resource),每个资源必须至少有一个URI(尽可能少且具备实际意义)。api


  • 资源是有URI来指定的(client也是经过URI来訪问的)。
  • 对资源的操做包含获取、建立、改动、删除等操做,而这些操做正好相应HTTP协议提供的GET、POST、PUT、DELETE方法。
  • 经过操做资源的表现形式来操做w资源。
  • 资源的表现形式则是XML或者HTML。


REST的要求

        对于实际的web架构假设要实现RESTful风格,有下面4点要求:浏览器


  1. 具备client和server结构
  2. 链接协议具备无状态性。
  3. 能够利用Cache机制增进性能
  4. 层次化的系统。

  

      RESTful最重要的原则是:client和server之间的交互在请求之间是无状态的。从client到server的每个请求都必须包括理解请求所必须的信息。这样server端在请求期间从新启动,client不会获得通知,且无状态请求可以由不论什么可用服务进行回答,client可以缓存数据以改进性能。缓存

      层次化的系统表示组件没法了解它与之交互的中间层之外的组件。经过将系统知识限制在但各层,可以限制整个系统的复杂性,促进了底层的独立性。restful

      应该注意差异应用的状态和链接协议的状态。HTTP链接是无状态的(也就是不记录每个链接的信息),而REST传输会包括应用的所有状态信息,所以可以减小对HTTP链接的反复请求资源消耗。网络

      含状态传输的web服务也称为RESTful web api是一个使用HTTP并遵循REST原则的Web服务(JAX-RS规范定义了java对RESTful Web Service的实现,sun的jersey框架则是多JAX-RS的一个实现,jersey也是兴许要学习的)。架构

      RESTful web api从下面三个方面资源进行定义:框架

  • 直观剪短的资源地址:URI,好比:http://XXX.com/resources。
  • 传输的资源:Webserver接受与返回的互联网媒体类型:JSON、XML、TEXT等。
  • 对资源的操做:Web服务在该资源上所支持的一系列请求方法(PUT POST GET DELETE)

REST长处

      一、可更高效利用缓存来提升响应速度。性能

      二、无状态性可以让不一样server的处理一些列请求中的不一样请求,提供server的扩展性。

      三、浏览器就能够做为client,简化软件需求。

      四、相对于其它叠加在HTTP协议之上的机智,REST的软件依赖性更小

      五、不需要额外的资源发现机制。

相关文章
相关标签/搜索