日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

探索drf執(zhí)行流程之APIView源碼分析

 印度阿三17 2019-07-13

1 Django REST framework 簡介

現(xiàn)在新一代web應用都開始采用前后端分離的方式來進行,淘汰了以前的服務器端渲染的方式。而實現(xiàn)前后端分離是通過Django REST framework(以下簡稱 DRF)來實現(xiàn)的。他是Django框架的一個擴展,提供了便捷的 REST API 開發(fā)框架。前后端分離方式有許多好處,比如:

1.1 可以前后端并行開發(fā),提高開發(fā)效率

1.2 頁面都在客戶端進行渲染,提高了渲染速度,減小了服務器的壓力

1.3 一套api提供給多個客戶端使用,而且不限制客戶端的類型(web,app均可)

提到前后端分離必然會提到restful,目標這是最流行的接口規(guī)范,越來越多的大型應用開始使用restful規(guī)范,restful強調(diào)一種無狀態(tài),資源的方式在django中很著名的一個框架是drf,幫我們減少了很多工作量。 網(wǎng)上關于 REST 的討論很多,在一些細節(jié)的地方卻經(jīng)常稍有出入,不過大體思想都是充分利用 HTTP/HTTPS 協(xié)議的特點,比如 HTTP 方法、header 信息、HATEOAS,直接面向資源進行操作。

2 Django REST framework 框架

Django REST framework 框架是一個用于構建Web API 的強大的工具。通常簡稱為DRF框架 或 REST framework。DRF框架是建立在Django框架基礎之上,由Tom Christie大牛二次開發(fā)的開源項目。

3 Django REST framework 十大組件

drf中有封裝了十大組件,分別是序列化組件,視圖組件,認證組件,權限組件,頻率組件,解析器,分頁器,響應器,url控制器,版本控制。這十大組件,能夠很好的幫助開發(fā)人員提升開發(fā)效率。

4 走進drf源碼執(zhí)行流程

4.1路由層調(diào)用as_view()方法

4.2 視圖類中沒有as_view()方法,所以去父類APIView中找

4.3 as_view最終還是dispatch方法,此時應該注意查找順序,從視圖類往上找,這個dispatch方法是APIView中的dispatch,很多人用Ctrl 左鍵點擊跳轉(zhuǎn)會跳到View中的dispatch中。此處要特別注意。

4.4 initialize_request如何將原生的request封裝到Request中

4.5 Request類中干了啥

把一些常用的方法重新封裝了,如GET方法封裝成了query_params,并偽裝成屬性。

4.6 原生的request和視圖類中其他數(shù)據(jù)封裝到Request類中后,走了initial方法

4 .7 最后通過映射進行分發(fā),并返回

5 總結(jié)

其實drf源碼的執(zhí)行流程和django中的view源碼執(zhí)行流程的區(qū)別關鍵是在于dispatch方法中執(zhí)行的功能不同,drf是在dispatch中對原生的request進行了封裝,然后通過initial()方法來執(zhí)行認證,權限,頻率的控制。后續(xù)會更新這三大組件的源碼分析,敬請期待!?。?!

來源:https://www./content-1-323751.html

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多