認識RESTful
在前后端分離的應用模式里,后端API介面如何定義?
例如對于后端資料庫中保存了商品的資訊,前端可能需要對商品資料進行增刪改查,那相應的每個操作后端都需要提供一個API介面:
- POST /add-goods 增加商品
- POST /delete-goods 洗掉商品
- POST /update-goods 修改商品
- 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動詞,對服務器端資源進行操作,實作"表現層狀態轉化",
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/125444.html
標籤:Python
上一篇:01.DRF-Web應用模式
下一篇:其他方式創建陣列
