RESTful 架構風格

RESTful架構風格

RESTful架構風格最初由Roy T. Fielding(HTTP/1.1協議專家組負責人)在其2000年的博士學位論文中提出。HTTP就是該架構風格的一個典型應用。從其誕生之日開始,它就因其可擴展性和簡單性受到越來越多的架構師和開發者們的青睞。一方面,隨着雲計算和移動計算的興起,許多企業願意在互聯網上共享自己的數據、功能;另一方面,在企業中,RESTful API(也稱RESTful Web服務)也逐漸超越SOAP成爲實現SOA的重要手段之一。時至今日,RESTful架構風格已成爲企業級服務的標配。

REST即Representational State Transfer的縮寫,可譯爲"表現層狀態轉化”。REST最大的幾個特點爲:資源、統一接口、URI和無狀態。

 

 

RESTful架構風格的特點

概念1:資源

所謂"資源",就是網絡上的一個實體,或者說是網絡上的一個具體信息。它可以是一段文本、一張圖片、一首歌曲、一種服務,總之就是一個具體的實在。資源總要通過某種載體反應其內容,文本可以用txt格式表現,也可以用HTML格式、XML格式表現,甚至可以採用二進制格式;圖片可以用JPG格式表現,也可以用PNG格式表現;JSON是現在最常用的資源表示格式。

結合我的開發實踐,我對資源和數據理解如下:

資源是以json(或其他Representation)爲載體的、面向用戶的一組數據集,資源對信息的表達傾向於概念模型中的數據:

  • 資源總是以某種Representation爲載體顯示的,即序列化的信息
  • 常用的Representation是json(推薦)或者xml(不推薦)等
  • Represntation 是REST架構的表現層

相對而言,數據(尤其是數據庫)是一種更加抽象的、對計算機更高效和友好的數據表現形式,更多的存在於邏輯模型中

 

 

核心:

統一接口

RESTful架構風格規定,數據的元操作,即CRUD(create, read, update和delete,即數據的增刪查改)操作,分別對應於HTTP方法:GET用來獲取資源,POST用來新建資源(也可以用於更新資源),PUT用來更新資源,DELETE用來刪除資源,這樣就統一了數據操作的接口,僅通過HTTP方法,就可以完成對數據的所有增刪查改工作。

即:

  • GET(SELECT):從服務器取出資源(一項或多項)。
  • POST(CREATE):在服務器新建一個資源。
  • PUT(UPDATE):在服務器更新資源(客戶端提供完整資源數據)。
  • PATCH(UPDATE):在服務器更新資源(客戶端提供需要修改的資源數據)。
  • DELETE(DELETE):從服務器刪除資源。

 

 

關鍵:

URI

可以用一個URI(統一資源定位符)指向資源,即每個URI都對應一個特定的資源。要獲取這個資源,訪問它的URI就可以,因此URI就成了每一個資源的地址或識別符。

一般的,每個資源至少有一個URI與之對應,最典型的URI即URL。

 

最後:

無狀態

所謂無狀態的,即所有的資源,都可以通過URI定位,而且這個定位與其他資源無關,也不會因爲其他資源的變化而改變。有狀態和無狀態的區別,舉個簡單的例子說明一下。如查詢員工的工資,如果查詢工資是需要登錄系統,進入查詢工資的頁面,執行相關操作後,獲取工資的多少,則這種情況是有狀態的,因爲查詢工資的每一步操作都依賴於前一步操作,只要前置操作不成功,後續操作就無法執行;如果輸入一個url即可得到指定員工的工資,則這種情況是無狀態的,因爲獲取工資不依賴於其他資源或狀態,且這種情況下,員工工資是一個資源,由一個url與之對應,可以通過HTTP中的GET方法得到資源,這是典型的RESTful風格。

 

 

因爲無狀態:所以——>認證機制很重要

由於RESTful風格的服務是無狀態的,認證機制尤爲重要。例如上文提到的員工工資,這應該是一個隱私資源,只有員工本人或其他少數有權限的人有資格看到,如果不通過權限認證機制對資源做一層限制,那麼所有資源都以公開方式暴露出來,這是不合理的,也是很危險的。

 

 

認證機制解決的問題是,確定訪問資源的用戶是誰;權限機制解決的問題是,確定用戶是否被許可使用、修改、刪除或創建資源。權限機制通常與服務的業務邏輯綁定,因此權限機制需要在每個系統內部定製,而認證機制基本上是通用的,常用的認證機制包括 session auth(即通過用戶名密碼登錄),basic authtoken authOAuth,服務開發中常用的認證機制爲後三者。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章