1.REST即表現層狀態傳遞(Representational [,rɛprɪzɛn'teʃnl] State Transfer,簡稱REST)。 (1)REST名詞解釋: 通俗來講就是資源在網路中以某種表現形式進行狀態轉移。分解開來: Resource:所指的不只是數據,而是數據和表現形式的組合; ...
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。 參考博文: http://www.ruanyifeng.com/blog/2014/05/restful_api.html 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。在資源的表達中包含了鏈接信息。客戶端可以根據鏈接來發現可以執行的動作。
- 客戶端向伺服器索取公鑰 PublicKey;
- 伺服器將公鑰發給客戶端(這裡沒有保密需求,因為公鑰是向所有人公開的);
- 客戶端使用伺服器的公鑰 PublicKey 把 Pre-Master-Key 加密成密文,傳送給伺服器;
- 伺服器用私鑰 PrivateKey 解密密文,獲取到客戶端發送的 Pre-Master-Key;
- 可以利用緩存Cache來提高響應速度
- 通訊本身的無狀態性可以讓不同的伺服器處理一系列請求中的不同請求,提高伺服器的擴展性
- 瀏覽器即可做客戶端,簡化軟體開發的需求
- 相對於其他疊加的HTTP協議之上的機制,REST的軟體依賴性更小
- 不需要額外的資源發現機制
- 在軟體技術演進中的長期的相容性更好
- 資源(Resource)
- 資源的表現形式(Representation)
- 狀態轉移(State Transfer)
- 統一介面(Uniform Interface)
- 超文本驅動(Hypertext Driven)