DRF一---前後端分離的價紹 和 後端接口使用規範

瞭解前後端分離和不分離

drf是前後端分離的
在web開發模式中有前後端分離和前後端不分離,這兩種開發模式。

什麼是前後端不分離?

在這裏插入圖片描述
這種模式下,耦合度比較高,django就是前後端不分離的。
由於app的發展,他需要的只是一份單純的數據,而不是一堆html的代碼。有了這樣一份數據之後,一份可以給app,一份呢,可以給pc端的前端使用,減少工作量。

什麼是前後端分離?

後端主要是提供接口提供數據
前端和app就可以調用接口展示數據
注意,調用接口之後,返回的數據是json數據或者xml數據
前端想要什麼樣的頁面,後端不管,只是給你展示數據。那這樣的話,耦合度就比較低。

前後端分離

優勢

耦合度比較低;
多端適用;(app、前端、公衆號都可以共同使用這一份數據)
前後端開發職責模糊;
解決開發效率問題;
可以提高前端程序員的能力;
解決服務器壓力;(前端的部署在前端服務器上,後端的部署在後端服務器上)

缺點

前端人員學習的東西增加(vue js 啊這些);
後端程序員需要給前端寫文檔,表示這些接口是幹什麼用的,以及返回的是什麼樣的數據等等;

前後端分離後,後端的使用規範

這個規範就叫RESTful API

一、域名

把域名變成一個接口
應該儘量將api (也就是接口)部署在專用域名之下,比如

https://api.example.com

如果確定API很簡單,不會有進一步擴展,可以考慮放在主域名下。

https://example.com/api/
這樣會解決跨域的問題

二、協議

推薦https

三、版本

app端需要更新,app不像網頁,後臺一更新,你訪問的時候就是更新好的。
app端的更新,是需要兼容的。也許有的人就不想更新,那你也得保存不跟新的那部分人額數據4
也是通過接口來實現的,將API的版本號放入URL

http://www.example.com/app/1.0/ 這個就表示1.0的版本
http://www.example.com/app/1.1 這個表示1.1的版本
http://www.example.com/app/2.0/ 這個表示2.0的版本

四、路徑

推薦使用名詞加複數,什麼意思呢,
就比如你想獲取1.0版本下的所有的蘋果,那麼接口應該是

http://www.example.com/app/1.0/

五、http請求方法

利用的HTTP方法可以分離網址中的資源名稱的操作。
這樣會減少接口
GET-------獲取資源
POST-------增加資源
DELETE------刪除資源
PATCH-------部分更新資源
PUT------全部更新資源
比如:我們想刪除資源

http://example.com/app/1.0/ students/1/
一般根據id進行唯一標識來刪除,
我們在經行增刪改查的時候,都可以使用這個接口,只是請求方法發生了改變

六、過濾信息

比如分頁:
接口就可以寫成

http://example.com/app/1.0/ students/1/?page=2

出來分頁之外,還可以指定:

?limit=10:指定返回記錄的數量
?offset=10:指定返回記錄的開始位置。
?page=2&per_page=100:指定第幾頁,以及每頁的記錄數。
?sortby=name&order=asc:指定返回結果按照哪個屬性排序,以及排序順序。
?animal_type_id=1:指定篩選條件

七、狀態碼

200 OK - [GET]:服務器成功返回用戶請求的數據
201 CREATED - [POST/PUT/PATCH]:用戶新建或修改數據成功。
202 Accepted - []:表示一個請求已經進入後臺排隊(異步任務)
204 NO CONTENT - [DELETE]:用戶刪除數據成功。
400 INVALID REQUEST - [POST/PUT/PATCH]:用戶發出的請求有錯誤,服務器沒有進行新建或修改數據的操作
401 Unauthorized - []:表示用戶沒有權限(令牌、用戶名、密碼錯誤)。
403 Forbidden - [] 表示用戶得到授權(與401錯誤相對),但是訪問是被禁止的。
404 NOT FOUND - []:用戶發出的請求針對的是不存在的記錄,服務器沒有進行操作,該操作是冪等的。
406 Not Acceptable - [GET]:用戶請求的格式不可得(比如用戶請求JSON格式,但是隻有XML格式)。
410 Gone -[GET]:用戶請求的資源被永久刪除,且不會再得到的。
422 Unprocesable entity - [POST/PUT/PATCH] 當創建一個對象時,發生一個驗證錯誤。
500 INTERNAL SERVER ERROR - [*]:服務器發生錯誤,用戶將無法判斷髮出的請求是否成功。

八、錯誤處理:

{
error:“Invalid API key”
}

會返回這樣一個字符串,但是對於移動端的返回錯誤格式一般是

在這裏插入圖片描述

九、返回結果

返回的數據都是json

GET /collection:返回資源對象的列表(數組)
GET /collection/resource:返回單個資源對象
POST /collection:返回新生成的資源對象
PUT /collection/resource:返回完整的資源對象
PATCH /collection/resource:返回完整的資源對象
DELETE /collection/resource:返回一個空文檔

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