通俗來說就是資源在網絡中以某種表現形式進行狀態轉移。分解開來: spring
Resource:所指的不僅是數據,而是數據和表現形式的組合; 數據庫
Representational:某種表現形式,好比用JSON,XML,JPEG等; 服務器
State Transfer:狀態變化。經過HTTP動詞實現。 網絡
(2)RESTful API: 架構
REST(表述性狀態轉移)是一組架構約束條件和原則。知足這些約束條件和原則的應用程序或設計就是RESTful。 app
2.Java中實現RESTful API的主流框架: 框架
l Jersey 性能
l RESTEasy 測試
l Restlet 設計
l Apache CXF
以上幾個均爲基於JAX-RS的實現,在性能測試中,JBoss的RESTEasy吞吐率最好,SUN的Jersey其次,CXF、Restlet最差。(網評)
3.知足HATEOAS(超媒體做爲應用狀態的引擎 Hypermedia As The Engine Of Application State)約束的REST實現,使用Spring Data項目中的如下幾個子項目:
(1)spring-data-rest並無真正的實現JAX-RS(Java API for RESTful Web Services)規範。 其中JAX-RS是Oracle的Java EE 6的技術,與Spring開源平臺下的框架有所不一樣。
(2)Spring Data JPA 是 Spring 基於 ORM 框架、JPA 規範的基礎上封裝的一套JPA應用框架,可以使開發者用極簡的代碼便可實現對數據的訪問和操做。
此外,Spring Data還包括包括非關係數據庫、Map-Reduce 框架、雲數據服務等等; HATEOAS(Hypermedia as the engine of application state)是 REST 架構風格中最複雜的約束,也是構建成熟 REST 服務的核心。
REST 成熟度模型把 REST 服務按照成熟度劃分紅 4 個層次:
第一個層次(Level 0)的 Web 服務只是使用 HTTP 做爲傳輸方式,實際上只是遠程方法調用(RPC)的一種具體形式。SOAP 和 XML-RPC 都屬於此類。
第二個層次(Level 1)的 Web 服務引入了資源的概念。每一個資源有對應的標識符和表達。
第三個層次(Level 2)的 Web 服務使用不一樣的 HTTP 方法來進行不一樣的操做,而且使用 HTTP 狀態碼來表示不一樣的結果。如 HTTP GET 方法來獲取資源,HTTP DELETE 方法來刪除資源。
第四個層次(Level 3)的 Web 服務使用 HATEOAS。在資源的表達中包含了連接信息。客戶端能夠根據連接來發現能夠執行的動做。
從上述 REST 成熟度模型中能夠看到,使用 HATEOAS 的 REST 服務是成熟度最高的,也是推薦的作法。對於不使用 HATEOAS 的 REST 服務,客戶端和服務器的實現之間是緊密耦合的。客戶端須要根據服務器提供的相關文檔來了解所暴露的資源和對應的操做。當服務器發生了變化時,如修改了資源的 URI,客戶端也須要進行相應的修改。而使用 HATEOAS 的 REST 服務中,客戶端能夠經過服務器提供的資源的表達來智能地發現能夠執行的操做。當服務器發生了變化時,客戶端並不須要作出修改,由於資源的 URI 和其餘信息都是動態發現的。
寫在最後:
碼字不易看到最後了,那就點個關注唄,只收藏不點關注的都是在耍流氓! 關注並私信我「架構」,免費送一些Java架構資料,先到先得!