探索drf執行流程之APIView源碼分析

Django REST framework 簡介

如今新一代web應用都開始採用先後端分離的方式來進行,淘汰了之前的服務器端渲染的方式。而實現先後端分離是經過Django REST framework(如下簡稱 DRF)來實現的。他是Django框架的一個擴展,提供了便捷的 REST API 開發框架。先後端分離方式有許多好處,好比:web

1.1 能夠先後端並行開發,提升開發效率django

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

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

提到先後端分離必然會提到restful,目標這是最流行的接口規範,愈來愈多的大型應用開始使用restful規範,restful強調一種無狀態,資源的方式在django中很著名的一個框架是drf,幫咱們減小了不少工做量。 網上關於 REST 的討論不少,在一些細節的地方卻常常稍有出入,不過大致思想都是充分利用 HTTP/HTTPS 協議的特色,好比 HTTP 方法、header 信息、HATEOAS,直接面向資源進行操做。服務器

Django REST framework 框架

Django REST framework 框架是一個用於構建Web API 的強大的工具。一般簡稱爲DRF框架 或 REST framework。DRF框架是創建在Django框架基礎之上,由Tom Christie大牛二次開發的開源項目。restful

Django REST framework 十大組件

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

走進drf源碼執行流程

路由層調用as_view()方法

視圖類中沒有as_view()方法,因此去父類APIView中找

as_view最終仍是dispatch方法,此時應該注意查找順序,從視圖類往上找,這個dispatch方法是APIView中的dispatch,不少人用Ctrl+左鍵點擊跳轉會跳到View中的dispatch中。此處要特別注意。

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

Request類中幹了啥

把一些經常使用的方法從新封裝了,如GET方法封裝成了query_params,並假裝成屬性。框架

原生的request和視圖類中其餘數據封裝到Request類中後,走了initial方法

最後經過映射進行分發,並返回

總結

其實drf源碼的執行流程和django中的view源碼執行流程的區別關鍵是在於dispatch方法中執行的功能不一樣,drf是在dispatch中對原生的request進行了封裝,而後經過initial()方法來執行認證,權限,頻率的控制。後續會更新這三大組件的源碼分析,敬請期待!!!!前後端分離

相關文章
相關標籤/搜索