1. 程式人生 > >淺談RESTful架構風格

淺談RESTful架構風格

RESTful

REST (representation state transfer)表述性狀態轉移。該架構主張服務端維護資源狀態,客戶端維護會話狀態,消除服務端維護客戶請求狀態的開銷,有利於伺服器橫向擴充套件和負載均衡。

REST使伺服器處於無狀態,及伺服器僅僅管理資源的狀態,會話的狀態的需要客戶端自己來維持。舉個例子,比如我呼叫遠端服務next操作(功能:當前書籍的下一章),這時伺服器端必須存有我當前瀏覽資訊,才能使得next操作返回預期的結果。伺服器同時要為所有的使用者維護這樣的資訊才能返回正確的下一章內容給相應的使用者。
那麼能不能我主動告訴伺服器我在哪一章呢,這樣不就可以使得伺服器不必大規模維護這樣資訊

?當前可以,這就是REST思想的核心,客戶端這邊告訴伺服器期望的狀態,伺服器返回相應的狀態即可。也就說伺服器不關心具體的處理過程只關係最後的狀態。所以上面的例子,客戶端可以傳送https://www.my.com/article/2,告訴伺服器我期望第二頁的內容。且慢!那如果客戶端希望刪除下一章的內容怎麼辦?按照REST架構風格,同樣也是傳送上述請求?那伺服器如何知道客戶端的具體操作意圖來完成資源的狀態轉移呢?這就需要在請求頭中新增約定的動作Code。比如HTTP協議中的GET,POST,PUT,DELETE語義。其中GET對應的是查詢動作;POST對應的是增加動作;PUT對應的是更新操作;DELETE對應的刪除操作。
有了期望的資源狀態和操作,就可以使得伺服器處於無狀態,以滿足高併發和動態均衡的需求。

應用

通過SpringCloud Eureka註冊中心,伺服器可以進行服務註冊、續約和下線;客戶端可以獲取呼叫方的服務資訊。RestTemplate支援JSON格式和HTTP動作語義,給於了REST架構完美支援。