RESTful框架的API请求流程
2021-03-26 02:26
标签:lis color 目的 直接 url info 这不 就是 不执行 请看图!! 这个url表明在views这个视图下找到Class PublishView,再在这个类下面找到这个as_view()函数,返回一个函数名。当被调用的时候,执行这个函数。 但是我们可以看见这里面没有as_view()这个函数,所以往它的父类中寻找。 我们好不容易找到了,那我们来看看这里面到底返回了什么! 这里面又看到了,APIview这类往API这个父类中去执行,as_view()这个函数! (他到底要干啊!不妨我们在点进去看看) 这里面这个self有点意思,这个self指的是APIview类,这个类下的dispatch这个函数,返回的是这个view这个函数名字。我们知道了返回值,但是又有新的问题,APIview类自己有as_view这个函数,不执行,偏偏非要用父类中的as_view()方法,然后通过父类中的as_view()函数来执行。自己的dispatch()这个函数。这不多此一举吗? 不着急,我们再来看看APIview这个类中的as_view()函数方法! 其实,这里面啥没有写,直接利用类的继承了父类中的as_view()的方法。然后,源码的作者的目的就是要用自己的dispatch()这个函数, 但是自己又不想写as-view()这个函数,所有才用这种继承的方式!来缩减代码! RESTful框架的API请求流程 标签:lis color 目的 直接 url info 这不 就是 不执行 原文地址:https://www.cnblogs.com/wuchenyu/p/9397762.html总结:
用户请求前:
1、视图类调用执行as_view()方法
2、因视图类继承APIview
3、在APIview中找到as_view()方法
4、通过执行父类view中的as_view()方法返回view方法
此时url=["",view.类.as_view()]------>url=["",APIView.as_view()]------->url=["",View.view]
用户发请求
5、执行View中的as_view方法下的view方法,
6、调用dispatch方法,通过判断请求格式,获取视图类的对应的请求方法
7、通过反射执行对应视图类下的应用请求方法得到返回值并返回