接續上篇: 花栗鼠柑仔店: REST閱讀心得 part 2
參考資料: Representational State Transfer - Wikipedia, the free encyclopedia
6. 核心原則 (Central principle)
REST中一個重要的概念就是"資源的存在"(某個特定資訊的來源, sources of specific information), 每個資源都會被對應到一個全世界通用的識別碼(a global identifier)(如HTTP中的URI). 為了要運用這些資源,網路上的元件(user agents and origin servers) 透過一個標準的介面(如HTTP)相互溝通且交換這些資源(實際傳遞資訊的文件, the actual documents conveying the information)的表示式(representations). 舉例來說, 某個表示一個"圓"的資源, 可能接受請求並回覆一個表示式裡面包含著圓心座標跟半徑, 格式為SVG, 但也可能接受請求並回覆一個表示式, 裡頭有一串用逗號隔開的列表, 指定了任意三個在一弧形上不同的點(這也可以代表一個"圓").
任一數量的連接子 (connectors, 如:clients, servers, caches, tunnels...) 可間接傳達要求, 但其這樣做不會"知道過去"做過了那些要求 (這邊指的是"分層處理"(layering), 這也是REST架構所要求的一個限制, 也是許多資訊系統與網路架構的一個設計原則). 因此, 應用程式可以透過兩樣東西與資源互動: (1) 資源的識別子 (the identifier of the resource)與需要執行的動作(the action required). 其不需要知道應用程式跟資源間到底經過了那些caches, proxies, gateways, firewalls, tunnels, 或甚至server如何擺放這些資訊. 應用程式只需能夠解讀資訊或表示式傳回的格式(the format of the information), 而這些格式大多是HTML, XML 或 JSON, 也有可是影像, 純文字, 或其他內容等等.
7. RESTful web services
RESTful web service (也可稱為 RESTful web API) 是一個使用HTTP與REST的原理來實作的web service. 其為一個資源的集合, 裏頭包含了三個已定義的部分:
- web service所使用的基礎URI, (the base URI for the web service), 如: http://example.com/resources/
- web service所支援的資料MIME類型, 這邊泛指如 JSON, XML 或 YAML , 但也可是其他有效的MIME類型.
- web service所支援的操作集合, 這些操作使用HTTP的方法 (如: POST, GET, PUT 或 DELETE).
PUT與DELETE方法是冪等方法(idempotent methods, 意旨執行多次的結果不變). GET方法是一個安全的方法(safe method, 無任何副作用, 也隱含著也是冪等方法).
與SOAP式的web services不同的是, RESTful web services沒有所謂"官方的標準", 這是因為REST是一個架構, 與SOAP不同, SOAP是一個通訊協定. 即使REST不是一個標準, 一個RESTful的實作如Web還是可使用如HTTP, URL, XML, PNG的標準來實現.
8. REST的相關實作與參考資料
請參考: http://en.wikipedia.org/wiki/Representational_State_Transfer#Public_implementations
完結!
沒有留言:
張貼留言