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...