1. 程式人生 > >1、Django REST framework 理解

1、Django REST framework 理解

collect 需要 取出 patch str 增刪改 media add 方法

Web應用模式

1 .前後端不分離:在前後端不分離的應用模式中,前端頁面看到的效果都是由後端控制,由後端渲染頁面或重定向,也就是後端需要控制前端的展示,前端與厚度那的耦合度很高.

這種應用模式比較合適純網頁應用,但是後端對接APP時,App可能並不需要後端返回一個HTML網頁,二僅僅是數據本身,所以後端原本返回網頁的接口不在適用前端APP應用,為了對接APP後端嗨需再開發一套接口
2.前後端分離:在前後端分離的應用模式中,後端僅返回前端所需的數據,不在渲染HTML頁面,不在控制前端的效果,只用前端用戶看到什麽效果,從後端請求的數據如何加載到前端中,都由前端自己決定,網頁有網頁的處理方式,APP有APP的處理方式,但無論哪種前端,所需要的數據基本相同,後端僅需開發一套邏輯對外提供數據即可.

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

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

認識RESTful

1.在前後端分離的應用模式裏.後端API接口如何定義?
1、POST/add-goods增加商品
2、POST/delete-goods刪除商品
3、POST/update-goods修改商品
4、GET/get-goods查詢商品信息

2.名稱
具象狀態傳輸” 或者表現層轉換化.
RESTful是一種開發理念 . REST是設計風格而不是標準
REST特點:url簡潔,將參數通過url傳到服務器.
RESTful框架介紹:


1.具象的:資源
2.表現:格式
3.狀態轉換:數據變化
如果客服端想要操作服務器,必須通過某種手段,讓服務器端發生"狀態轉換"
總結:
1.每一個URL代表一種資源
2.客服端和服務器端,傳遞這個資源的表現層
3.客服端通過四個GTTP動詞,對服務器端資源進行操作,實現"表現層狀態轉化"

表現層狀態轉化

1.域名
應該盡量將API部署在專用域名之下
如果確定API很簡單,不會有進一步擴展,可以考慮放在主域名下。
2.版本
應該講API的版本號放入URL
3.路徑
表示API的具體網址,每個網站代表一種資源
1. 資源作為網站,不能有動詞,而且所用的名詞往往與數據庫的表名對應
2. API中的名詞應該使用復數,無論子資源或者所有資源

動詞:

GET(SELECT):從服務器取出資源(一項或多項)。
POST(CREATE):在服務器新建一個資源。
PUT(UPDATE):在服務器更新資源(客戶端提供改變後的完整資源)。
DELETE(DELETE):從服務器刪除資源。
4.過濾信息
如果技能數量很多,服務器不可能都將它們返回給與用戶API應該提參數,過濾返回結果
5. 狀態碼
服務器想用戶返回的狀態碼,和提示信息,
6. 錯誤處理(Error handling)
如果狀態碼4xx,服務器就應該想用戶返回出錯信息,
7. 返回結果
針對不同操作,服務器想用戶返回的結果應該符合以下規範
1.GET/collection:返回資源對象的列表
2.GET/coliection/resource:返回單個 資源對象
3.POST/collection:返回新生成的資源對象
4.PUT/collection/resource返回完整的資源對象
5.PATCH//collection/resource返回完整的資源對象
6.DELECT//collection/resource返回一個空文檔
8. 超媒體(Hypermedia API)
9. 其他
服務器返回的數據格式,應該盡量使用JSON,避免使用XML。

明確REST接口開發的核心任務之序列化Serialization

序列化:在數據存儲於傳送的部分是指將一個對象存儲至一個儲存媒介,可以是字節或是XML等格式,這程序被應用在不同應用程序之間傳送對象,以及服務器將對象儲存到檔案或數據庫.相反的過程又稱為反序列化
將程序中的一個數據結構類型轉換為其他格式(字典\JSON\XML等)
反之:講其他格式(字典\JSON\XML等)轉換為程序中的數據,這個過程我們稱為反序列化


總結,:視圖中需要做的最核心
1.將數據庫數據序列化為前端鎖需要的格式,並返回.
2.將前端發送的數據反序列化為模型類對象,並保存到數據庫中

Django REST framework 簡介

序列化和反序列化可以復用
增: 效驗請求數據>執行反序列化過程>保存數據庫>將保存的對象序列化並返回
刪: 判斷要刪除的數據是否存在.>執行數據庫刪除
改: 判斷要修改的數據是否存在>效驗請求的參數>執行反序列化過程>保存數據庫>將保存的對象序列化並返回
查: 查詢數據庫>將數據序列化並返回


特點:
1.提供了定義序列化器Serializer的方法,可以快速根據Django ORM 或者其他庫自動序列化/反序列化
2.提供了豐富的類視圖\MIXIN擴展類,簡化視圖的編寫
3.豐富的定制層級:函數視圖\類視圖\試圖結合到自動生成API,滿足各種需要
4.多種身份認證和權限認證方式的支持
5.內置了限流系統
6.直觀的API web界面
7.可擴展性 , 插件豐富

1、Django REST framework 理解