drf知識整理一

2022-05-05 04:00:08 字數 1955 閱讀 8674

drf :django restframework(全稱)

drf框架作用是用來寫介面

介面: 明確了請求方式,提供對應後台所需的引數,請求url鏈結可以得到後台的響應資料

(核心部分:請求方式,請求位址,請求引數,響應結果)

寫介面: 參照某種規則(規範)書寫url鏈結,同時根據規則制定請求方式,請求資料與響應結果

介面文件: 提供給前後端開發人員與測試人員檢視

(寫介面文件的yapi平台,訪問介面的postman工具)

webapi 介面規範: restful

例:

#1.api關鍵字標識介面url

#2.在url鏈結中標識資料的版本 v

#3.前後臺互動的資料資源(複數形式,不能帶有動詞,動詞可以有特殊含義,但不能與資源拼接)

#4.請求方式決定資源操作

get請求: 取 又分為單查群查

post請求: 增 單增群增

put請求: 改(全域性) 單改群改

patch請求: 改(區域性) 單改群改

delete請求: 刪 單刪群刪

由此形成十大介面

#5. 響應狀態碼

正常響應2xx:200 常規請求;201 建立成功

重定向響應3xx:301 永久重定向; 302 暫時重定向

客服端異常4xx:403 請求無許可權;404 請求路徑不存在;405 請求方法不存在

服務端異常5xx:500 伺服器異常

#6.響應結果

響應的資料要有狀態碼,狀態資訊以及資料本身

```,

"address":"月羅路2380號", #位址

"province":"上海市", # 省份

"city":"上海市", #城市

"area":"寶山區", #區

"street_id":"339ed41ae1d6dc320a5cb37c", # 街道_id

"telephone":"(021)56761006", #手機號

"detail":1, #詳情

"uid":"339ed41ae1d6dc320a5cb37c" #唯一識別符號

}...

]}```

基於原生django書寫滿足restful規範的介面:兩個url 對應 乙個檢視類 完成 十大介面

/api/users/

/api/users/(?p\d+)/

class user(view):

get|post|put|patch|delete方法

as_view()完成路由匹配 => url請求會呼叫as_view()的返回值檢視函式view => 呼叫dispatch()完成請求分發 => 檢視類的具體檢視方法處理請求 => 返回給前台

pip install djangorestframework

直接檢視 rest_framework.view的apiview的dispatch方法

​ 檢視類繼承drf的apiview: from rest_framework.views import apiview

​ 讀懂drf的as_view()方法:返回檢視函式view是,區域性禁用了csrf認證 - csrf_exempt(view)

​ 請求分發的dispatch(),

​ 在分發執行檢視方法前,完成了

​ 二次封裝request:self.initialize_request(request, *args, **kwargs)

​ 三大認證:self.initial(request, *args, **kwargs)

​ 在檢視方法處理完請求後:

​ 出現異常的處理:self.handle_exception(exc)

​ 二次封裝response:self.finalize_response(request, response, *args, **kwargs)

DRF必備知識 1

在序列化與反序列化時,雖然操作的資料不盡相同,但是執行的過程卻是相似的,也就是說這部分 是可以復用簡化編寫的。在開發rest api的檢視中,雖然每個檢視具體操作的資料不同,但增 刪 改 查的實現流程基本套路化,所以這部分 也是可以復用簡化編寫的 增 校驗請求資料 執行反序列化過程 儲存資料庫 將儲...

前端知識整理(一)

一 網路請求 1 dns解析 1 瀏覽器會首先檢視本地硬碟的 hosts 檔案,看看其中有沒有和這個網域名稱對應的規則,如果有的話就直接使用 hosts 檔案裡面的 ip 位址。2 如果在本地的 hosts 檔案沒有能夠找到對應的 ip 位址,瀏覽器會發出乙個 dns請求到本地dns伺服器 網路接入...

tableView小知識整理(一)

1.去掉uitableview headerview黏性 1 設定 sticky param scrollview void scrollviewdidscroll uiscrollview scrollview else if scrollview.contentoffset.y sectionh...