REST之前:Programmable Web

image
image

REST架構風格的服務(或者它開放的api),屬于Programmable Web。研究REST 架構風格,要從Programmable Web說起。

Programmable Web一詞來源于《Restful Web Services》,我覺得憑字面意思理解就好了。所謂的Programmable Web,可以理解為網站的內容源自服務器的資源,服務器上的所有資源都能夠以某種方式提供給客戶端,客戶端的網站可以根據自己的需求設計每個頁面,以及頁面中可以顯示的服務器端資源。從Programmable Web角度看,twitter是對twitter api編程產生的一個產品;新浪微博的官方網站,第三方客戶端和應用等也都是基于新浪微博api編程產生的一系列的產品。

組成部分

Programmable Web主要由三部分組成:HTTP,Method Information(方法信息)和作用域(Scoping Information)。

HTTP

我們談論的是web,web上少不了http。(http詳情可以參考wikipedia

對于Programmable Web而言,客戶端要獲得服務器上的資源,需要發起一個http request,服務器接收客戶端的請求并作出反饋會給客戶端發送一個http response,http request和http response都要封裝到envelope中傳輸

http request的主要組成

  • http method
    GET,POST,這些又被稱為http動詞,用于指示客戶端期望服務器如何處理http request

  • path
    URI中的hostname右邊的部分,如 http://essay.igevin.info/2013/05/01/how-pm-know-tech.html 中的2013/05/01/how-pm-know-tech.html

  • request header
    request header是以 key:value(鍵值對) 形式描述的元數據信息(metadata)。HTTP協議中定義了一些標準的header,我們也可以添加自定義的http header

  • entity-body
    envelope中的信息正文。entity-body可以為空,如GET請求,不需要entity-body中的信息

http response的主要組成

  • http response code
    response code告訴客戶端向服務器請求的結果是成功,失敗或者其他情況,如200表示成功, 301表示永久的重定向,404表示not found…… 詳情請看這里

  • response header
    與上面相同

  • entity body or representation
    與上面相同。值得一提的是,這里的內容是貼有“標簽”的(標簽的內容會放在response header的元數據 content-type中)。這些標簽會告訴瀏覽器如何處理這些response信息。例如,如果在 content-type中指明類型為 text/html,則瀏覽器會將這里的response信息解析為html文檔,并渲染為web頁面。常用的http content type 可以參考這個頁面

現在不同的web service在設計與實現時,對兩個問題的解決差別很大,分別為如何傳遞 『Method Information』以及如何表達『Scoping Information』

Method Information

Method表達的是,客戶端如何向服務器傳達自己請求的操作是什么(create, delete, update or read?),或者服務器暴露出來的api對數據或者請求做怎樣的處理。

REST 架構風格利用HTTP method作為Method Information的載體。

Scoping Information

Scoping information表達了數據的選擇。服務器應該對哪個數據集執行客戶端的請求操作?為什么服務器要update(or get, delete, etc.)這個數據集,而不去update那個數據集?這些都是由Scoping information決定的。

有些web service 會將Scoping Information封裝到請求的envelope中,而RESTful架構風格直接將該信息暴露在url中。

最后

本文介紹了Programming Web的三個主要組成部分: http, method 和scope。由于不同的web service對method information和 scoping information的處理方式不同,架構風格可以分為 RESTful, RPC-Style及REST-RPC混合架構,這些架構有何不同,這里先挖個坑,后面填上~


圖片來源于網站 programming web(PS:與本文的『programming web』不是一回事 :P)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,951評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,381評論 25 708
  • 一說到REST,我想大家的第一反應就是“啊,就是那種前后臺通信方式。”但是在要求詳細講述它所提出的各個約束,以及如...
    時待吾閱讀 3,467評論 0 19
  • 文/曹不苦 記得,第一次接觸美國作家弗·司各特·菲茨杰拉德的《了不起的蓋茨比》這本書時,還在念高三,書是同桌的,內...
    曹不苦閱讀 692評論 3 11
  • 一、閱讀:今天晨讀文章分享的內容是快速成功的三個方法, 1、利用平臺,提高效率。平臺的形式可以是工具、技術、資源。...
    小螃謝閱讀 264評論 0 0