REST(RepresentationalState Transfer)是Roy Fielding 提出的一个描述互联系统架构风格的名词。REST定义了一组体系架构原则,您能够根据这些原则设计以系统资源为中心的Web 服务,包括使用不一样语言编写的客户端如何经过 HTTP处理和传输资源状态。浏览器
为何称为 REST?Web本质上由各类各样的资源组成,资源由URI 惟一标识。浏览器(或者任何其它相似于浏览器的应用程序)将展现出该资源的一种表现方式,或者一种表现状态。若是用户在该页面中定向到指向其它资源的连接,则将访问该资源,并表现出它的状态。这意味着客户端应用程序随着每一个资源表现状态的不一样而发生状态转移,也即所谓REST。服务器
第一个层次(Level0)的Web 服务只是使用 HTTP 做为传输方式,实际上只是远程方法调用(RPC)的一种具体形 式。SOAP和 XML-RPC都属于此类。架构
第二个层次(Level1)的Web 服务引入了资源的概念。每一个资源有对应的标识符和表达。spa
第三个层次(Level2)的Web 服务使用不一样的 HTTP 方法来进行不一样的操做,而且使用HTTP 状态码来表示不一样的结果。如 HTTPGET 方法来获取资源,HTTPDELETE 方法来删除资源。设计
第四个层次(Level3)的Web 服务使用 HATEOAS。在资源的表达中包含了连接信息。客户端能够根据连接来发现能够执行的动做。code
其中第三个层次创建了建立、读取、更新和删除(create,read, update, and delete,CRUD)操做与 HTTP方法之间的一对一映射。根据此映射:blog
(1)若要在服务器上建立资源,应该使用POST 方法。接口
(2)若要检索某个资源,应该使用GET 方法。资源
(3)若要更改资源状态或对其进行更新,应该使用PUT 方法。同步
(4)若要删除某个资源,应该使用DELETE 方法。
RestTemplate
采用同步方式执行 HTTP 请求的类,底层使用 JDK 原生 HttpURLConnection
API ,或者 HttpComponents
等其余 HTTP 客户端请求类库
API
与其它接口的不一样:
>容许调用者指定HTTP请求的方法(GET,POST,PUT等)
>能够在请求中增长body以及头信息,其内容经过参数‘HttpEntity<?>requestEntity’描述
>exchange支持‘含参数的类型’(即泛型类)做为返回类型,该特性经过‘ParameterizedTypeReference<T>responseType’描述