探索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()方法来执行认证,权限,频率的控制。后续会更新这三大组件的源码分析,敬请期待!!!!前后端分离

相关文章
相关标签/搜索