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’描述