1. 程式人生 > >基於Java的REST架構風格及介面安全性設計的討論

基於Java的REST架構風格及介面安全性設計的討論

1.REST即表現層狀態傳遞(Representational [,rɛprɪzɛn'teʃnl] State Transfer,簡稱REST)。

(1)REST名詞解釋: 通俗來講就是資源在網路中以某種表現形式進行狀態轉移。分解開來: Resource:所指的不只是資料,而是資料和表現形式的組合; Representational:某種表現形式,比如用JSON,XML,JPEG等; State Transfer:狀態變化。通過HTTP動詞實現。 (2)RESTful API: REST(表述性狀態轉移)是一組架構約束條件和原則。滿足這些約束條件和原則的應用程式或設計就是RESTful。 參考博文: 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 和其他資訊都是動態發現的。