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、通过反射执行对应视图类下的应用请求方法得到返回值并返回
  • 相关阅读:
    [leetcode] #279 Perfect Squares (medium)
    vue-cli3.0配置详解
    babel7 的配置加载逻辑
    webpack-小滴课堂学习笔记
    VUE-cli3使用 svg-sprite-loader
    打包报错,提示UglifyJs Unexpected token: keyword «const»
    UglifyJs报Unexpected token punc «:», expected punc «,» 这类错误的解决办法
    element-ui实现部分引用
    图解 HTTP 缓存
    process.argv
  • 原文地址:https://www.cnblogs.com/wuchenyu/p/9397762.html
Copyright © 2011-2022 走看看