前後端分離的好處,認識 Restful

Web應用模式

在開發Web應用中,有兩種應用模式:

  • 前後端不分離

  • 前後端分離

1 前後端不分離

在這裏插入圖片描述
在前後端不分離的應用模式中,前端頁面看到的效果都是由後端控制,由後端渲染頁面或重定向,也就是後端需要控制前端的展示,前端與後端的耦合度很高。

這種應用模式比較適合純網頁應用,但是當後端對接App時,App可能並不需要後端返回一個HTML網頁,而僅僅是數據本身,所以後端原本返回網頁的接口不再適用於前端App應用,爲了對接App後端還需再開發一套接口。

2 前後端分離

在這裏插入圖片描述
在前後端分離的應用模式中,後端僅返回前端所需的數據,不再渲染HTML頁面,不再控制前端的效果。至於前端用戶看到什麼效果,從後端請求的數據如何加載到前端中,都由前端自己決定,網頁有網頁的處理方式,App有App的處理方式,但無論哪種前端,所需的數據基本相同,後端僅需開發一套邏輯對外提供數據即可。

  • 在前後端分離的應用模式中 ,前端與後端的耦合度相對較低。

  • 在前後端分離的應用模式中,我們通常將後端開發的每個視圖都稱爲一個接口,或者API,前端通過訪問接口來對數據進行增刪改查。

認識RESTful

在前後端分離的應用模式裏,後端API接口如何定義?

例如對於後端數據庫中保存了商品的信息,前端可能需要對商品數據進行增刪改查,那相應的每個操作後端都需要提供一個API接口:

  1. POST /add-goods 增加商品
  2. POST /delete-goods 刪除商品
  3. POST /update-goods 修改商品
  4. GET /get-goods 查詢商品信息

對於接口的請求方式與路徑,每個後端開發人員可能都有自己的定義方式,風格迥異。

是否存在一種統一的定義方式,被廣大開發人員接受認可的方式呢?

這就是被普遍採用的API的RESTful設計風格。

1. 起源

REST這個詞,是Roy Thomas Fielding在他2000年的博士論文中提出的。
在這裏插入圖片描述
Fielding是一個非常重要的人,他是HTTP協議(1.0版和1.1版)的主要設計者、Apache服務器軟件的作者之一、Apache基金會的第一任主席。所以,他的這篇論文一經發表,就引起了關注,並且立即對互聯網開發產生了深遠的影響。

2. 名稱

Fielding 將他對互聯網軟件的架構原則,定名爲 REST,即 Representational State Transfer 的縮寫。維基百科稱其爲“具象狀態傳輸”,國內大部分人理解爲“表現層狀態轉化”。

RESTful是一種開發理念。維基百科說:REST是設計風格而不是標準。 REST描述的是在網絡中client和server的一種交互形式;REST本身不實用,實用的是如何設計 RESTful API(REST風格的網絡接口),一種萬維網軟件架構風格。

我們先來具體看下RESTful風格的url,比如我要查詢商品信息,那麼

非REST的url:http://.../queryGoods?id=1001&type=t01

REST的url:http://.../t01/goods/1001

可以看出 REST特點:url簡潔,將參數通過url傳到服務器,而傳統的url比較囉嗦,而且現實中瀏覽器地址欄會拼接一大串字符,想必你們都見過吧。但是採用REST的風格就會好很多,現在很多的網站已經採用這種風格了,這也是潮流方向,典型的就是url的短化轉換。

那麼,到底什麼是RESTFul架構: 如果一個架構符合REST原則,就稱它爲RESTful架構。

要理解 RESTful 架構,理解 Representational State Transfer 這三個單詞的意思。

  • 具象的,就是指表現層,要表現的對象也就是“資源”,什麼是資源呢?網站就是資源共享的東西,客戶端(瀏覽器)訪問web服務器,所獲取的就叫資源。比如html,txt,json,圖片,視頻等等。

  • 表現,比如,文本可以用txt格式表現,也可以用HTML格式、XML格式、JSON格式表現,甚至可以採用二進制格式;圖片可以用JPG格式表現,也可以用PNG格式表現。

    瀏覽器通過URL確定一個資源,但是如何確定它的具體表現形式呢?應該在HTTP請求的頭信息中用Accept和Content-Type字段指定,這兩個字段纔是對"表現層"的描述。

  • 狀態轉換,就是客戶端和服務器互動的一個過程,在這個過程中, 勢必涉及到數據和狀態的變化, 這種變化叫做狀態轉換。

    互聯網通信協議HTTP協議,客戶端訪問必然使用HTTP協議,如果客戶端想要操作服務器,必須通過某種手段,讓服務器端發生"狀態轉化"(State Transfer)。

    HTTP協議實際上含有4個表示操作方式的動詞,分別是 GET,POST,PUT,DELETE,他們分別對應四種操作。GET用於獲取資源,POST用於新建資源,PUT用於更新資源,DElETE用於刪除資源。GET和POST是表單提交的兩種基本方式,比較常見,而PUT和DElETE不太常用。

    而且HTTP協議是一種無狀態協議,這樣就必須把所有的狀態都保存在服務器端。因此,如果客戶端想要操作服務器,必須通過某種手段,讓服務器端發生"狀態轉化"(State Transfer)

3. 總結

綜合上面的解釋,RESTful架構就是:

  • 每一個URL代表一種資源;

  • 客戶端通過四個HTTP動詞,對服務器端資源進行操作。

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