1. RESTful架构风格

RESTful架构风格最初由Roy T. Fielding(HTTP/1.1协议专家组负责人)在其2000年的博士学位论文中提出。HTTP就是该架构风格的一个典型应用。从其诞生之日开始,它就因其可扩展性和简单性受到越来越多的架构师和开发者们的青睐。一方面,随着云计算和移动计算的兴起,许多企业愿意在互联网上共享自己的数据、功能;另一方面,在企业中,RESTful API(也称RESTful Web服务)也逐渐超越SOAP成为实现SOA的重要手段之一。时至今日,RESTful架构风格已成为企业级服务的标配。

REST即Representational State Transfer的缩写,可译为"表现层状态转化”。REST最大的几个特点为:资源、统一接口、URI和无状态。

1.1 RESTful架构风格的特点

1.1.1 资源

  所谓的资源,相当于是一个实体,或者是指网络上某一个具体的信息,都是属于一个唯一资源

1.1.2 统一接口

  • GET(SELECT):从服务器取出资源(一项或多项)。
  • POST(CREATE):在服务器新建一个资源。
  • PUT(UPDATE):在服务器更新资源(客户端提供完整资源数据)。
  • DELETE(DELETE):从服务器删除资源。

  restful架构风格规定,根据使用不同的提交方法来操作资源,能够统一资源的接口。在使用过程中,在默认的情况下,put与delect的提交服务器Tomcat不能识别,需要找到tomcat中conf文件夹下的server.xml配置文件,将文件中

1 <Connector port="8080" protocol="HTTP/1.1"
2                connectionTimeout="20000"/>

修改为:

1 <Connector port="8080" protocol="HTTP/1.1"
2                connectionTimeout="20000"
3                redirectPort="8443" URIEncoding="utf-8" parseBodyMethods="POST,PUT,DELETE"/>



这样tomcat就能够识别put和delect请求了。

1.1.3 URI

使用一个URI(统一资源定位符)指向资源,即每个URI都对应一个特定唯一的资源。要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地址或识别符。

一般的,每个资源至少有一个URI与之对应,最典型的URI即URL。

1.1.4 无状态

所谓无状态的,即所有的资源,都可以通过URI定位,而且这个定位与其他资源无关,也不会因为其他资源的变化而改变。有状态和无状态的区别,举个简单的例子说明一下。如查询员工的工资,如果查询工资是需要登录系统,进入查询工资的页面,执行相关操作后,获取工资的多少,则这种情况是有状态的,因为查询工资的每一步操作都依赖于前一步操作,只要前置操作不成功,后续操作就无法执行;如果输入一个url即可得到指定员工的工资,则这种情况是无状态的,因为获取工资不依赖于其他资源或状态,且这种情况下,员工工资是一个资源,由一个url与之对应,可以通过HTTP中的GET方法得到资源,这是典型的RESTful风格。

2. 使用RESTful架构风格的好处



  • 透明性,暴露资源存在。
  • 充分利用 HTTP 协议本身语义。
  • 无状态,这点非常重要。在调用一个接口(访问、操作资源)的时候,可以不用考虑上下文,不用考虑当前状态,极大的降低了复杂度(降低了服务之间的耦合度)
  • HTTP 本身提供了丰富的内容协商手段,无论是缓存,还是资源修改的乐观并发控制,都可以以业务无关的中间件来实现