1. 程式人生 > >REST 程式設計風格是什麼

REST 程式設計風格是什麼

首先,REST規範:
  • 強調HTTP應當以資源為中心,並且規範了資源URI的風格;
  • 規範了HTTP請求動作(PUT,POST等)的使用,具有對應的語義;
遵循REST規範的網路應用將會獲得下面好處:
  • URL具有很強可讀性的,具有自描述性;
  • 資源描述與檢視的鬆耦合;
  • 可提供的OpenAPI,便於第三方系統整合,提高互操作性;
  • 如果提供無狀態的服務介面,可提高應用的水平擴充套件性;

下面再詳細說明一下REST瞭解事物 :

【基本概念】
REST是一種軟體架構模式。核心概念包括:

資源(Resource):在REST中,資源可以簡單的理解為URI,表示一個網路實體。比如,/ users / 1 / name,對應id = 1的使用者的屬性name。


既然資源是URI,就會具有以下特徵:名詞,代表一個資源;對應它唯一的一個資源,是資源的地址。

表現(Representation):是資源呈現出來的形式,比如上述URI返回的HTML或JSON,包括HTTP Header等;

【實踐】
怎麼用呢?不同的伺服器端框架提供了各種解決方案比如JavaEE的中的開箱即用的Spring的MVC。
但實踐過程中,你自然會碰到一些需要思考的問題
1)如何定義資源:一般對資料庫實體(在傳統的關係型資料庫中)
2)需要對HTTP協議更多的理解
URL格式:協議://域名/路徑?查詢#HASH,實際的一個HTTP請求,還會包括報頭(含餅乾,方法等)

資源的URI格式:協議://域名/路徑,它只是URL的子集,表徵一個資源實體。

比如a.com/users/1

恰當地理解和返回Http Status(狀態碼).200 =成功,404 =資源不存在,500 =伺服器端錯誤等等。

3)REST操作
一般資源操作只有新增,刪除,查詢,更新,對應HTTP協議中四類請求:POST,DELETE,GET,PUT其中,後三個操作是。冪等的(什麼是冪等。? )

查詢資源時,更多的引數,比如分頁,排序,過濾條件,一般都會放在網址的查詢部分(查詢字串),
新增,更新資源,關於資源實體的內容,一般放在請求體(請求體)中。

實際傳送請求,還需要有動詞,表示對該資源執行什麼樣的操作。那麼超出這個範圍的操作該如何擴充套件?

REST操作返回什麼內容對於刪除,新增,更新等操作,通常是返回操作是否成功的標識;?如果失敗,需要返回錯誤程式碼和訊息,方便客戶端做進一步處理如果是查詢操作

,通常包含實體或者實體列表。
在最佳實踐中,應當還應該返回與此操作相關的其他操作。比如,查詢得到實體的響應中,應包含該實體的刪除,更新操作的地址。

請求和返回的機身,採用什麼格式?常見的格式包括XML / JSON / HTML。

【特點】

1. 狀態無關 —— 確保系統的橫向拓展能力
2. 超文字驅動,Fielding的原話是”hypertext-driven" —— 確保系統的演化能力
3. 對 resource 相關的模型建立統一的原語,例如:uri、http的method定義等 —— 確保系統能夠接納多樣而又標準的客戶端

從另外一個角度看,第一條保證服務端演化,第三條保證客戶端演化,第二條保證應用本身的演化,這實在是一個極具抽象能力的方案。