zoukankan      html  css  js  c++  java
  • RESTful框架的API请求流程

     请看图!!

    这个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()这个函数,所有才用这种继承的方式!来缩减代码!

    总结:

    用户请求前:
        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、通过反射执行对应视图类下的应用请求方法得到返回值并返回
  • 相关阅读:
    js之iframe子页面与父页面通信
    js的event对象
    整洁代码的4个条件
    PYTHON 自然语言处理
    如何检测浏览器是否支持CSS3
    BootStrap前端框架使用方法详解
    如何使用repr调试python程序
    Python编程快速上手——Excel到CSV的转换程序案例分析
    C++和JAVA传统中积极的一面
    20个LINUX相关的网站
  • 原文地址:https://www.cnblogs.com/wuchenyu/p/9397762.html
Copyright © 2011-2022 走看看