4.2 REST

  1. REST 全名為 Representational State Transfer。
  2. 是一種設計風格而不是一個標準。
  3. 用URL來表示一個資源或一些資源的集合(thing or collection things)。
    列出 REST 重要的原則:
  • 讓每一個 thing 都擁有一個 ID
    簡單來說,以 URI 來區別所有應該要被區別的 things(resources),不管這些 things 只是一個單一項目或是集合甚至是計算結果。
  • 把這些 things 都串在一起
    盡可能的以連結連接每一個 things(resources),就像是超連結那樣。
  • 使用標準的 methods
    讓 Client 端能夠跟你的 things(resources)做溝通,例如 HTTP 的基本 methods, GET, POST...etc。
  • 資源有多種的 representations
    提供多種不同的 representation 給不同的需求。

reference: http://www.infoq.com/articles/rest-introduction

REST

課堂筆記:

  • 遵循的principal稱為RESTful。
  • paincipal:應用的狀態和功能是一個資源,每個資源都是URI。
  • 程式是動態產生(URI),點了不同的URI才會產生改變。
  • API:Customer c = GetCustomer(1234)網頁的link會是http://網址列/1234

REST優點:

支援快取 caching 將改善反應時間跟server的負載能力

因為不必維持連結狀態,大大改善 server 的 scalability 能力。這表示不同server可以處理同一串 requests

一個瀏覽器就可以存取任一應用程式跟資源,client 端不需使用別的軟體

在HTTP之上不依存其他機制跟軟體

如同HTML這種文件具有後前及向後的相容能力

資料主要參考網站:http://ihower.idv.tw/blog/archives/1542

//////////////////

Rest 是用戶端與伺服器之間傳送資料的架構念   REST 則是在WEB層面來建立此通訊的抽象摸型 通常 REST會搭配XML和HTTP 協定

REST強調以下概念:

●透過特定ID來存取資源。單一資源可對應多項ID 但單一ID只能對應單一資源  也就是資源是可一對多  

●區別resource(資源)與Representation(表現)。用戶端存取資源時,只能操控伺服器的Representation
Representation中可包含連至其他資源的連結

●使用HTTP的GET PUT DELETE 與其他指令,操控資源與其相關的表現

●使用XML Schema之類的中繼資料(Metadata)技術,讓 Representation具有自我描述的特性

●Resource和representation 是以超媒體的形式對外公開,在rest架構之下,伺服器不須記憶或管理狀態,而是由用戶端來管理狀態。
即用戶端與伺服器端之間的資料交換,並非由非由伺服器來決定

採用REST軟體架構可讓web應用程式更具彈性!

 

====================================================

REST 從資源的角度來觀察整個網路,分佈在各處的資源由URI確定,而用戶端的應用通過URI來獲取資源的表形。獲得這些表形致使這 些應用程式轉變了其狀態。隨著不斷獲取資源的表形,用戶端應用不斷地在轉變著其狀態,所謂表形化的狀態轉變(Representational State Transfer)。

 

需要注意的是,REST是一種設計風格而不是一個標準。REST通常基於使用HTTPURI,和XML以及HTML這些現有的廣泛流行的 協議和標準。

 

REST的要求

 

    1. 用戶端和伺服器結構

 

    2. 連線協定具有無狀態性

 

    3. 能利用Cache機制增進性能

 

    4. 是有層次化的系統

 

    5. Code On Demand  -  Javacript

 

 

 

REST的優點

 

     1. 通訊本身的無狀態性可以讓不同的伺服器的處理一系列請求中的不同請求,提高伺服器的擴展性

 

    2. 流覽器即可作為用戶端,簡化軟體需求

 

    3. 相對與其他疊加在HTTP協議之上的機制,REST的軟體依賴性更小

 

    4. 不需要額外的資源發現機制

 

    5. 在軟體技術演進中的長期的相容性更好

 

 

reference: http://zh.wikipedia.org/zh/REST