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、通过反射执行对应视图类下的应用请求方法得到返回值并返回

原文地址:https://www.cnblogs.com/wuchenyu/p/9397762.html

时间: 2024-11-05 16:05:24

RESTful框架的API请求流程的相关文章

openstack身份认证与API请求流程

一.概况 1. 请求认证token时,需发送的认证信息包括: 2. 如果认证成功,会获得认证token 3. 在发送的API请求中将认证token填入X-Auth-Token字段.可以一直使用这个认证token发送API请求,直到任务完成或出现401非认证错误. 4. 如果出现401非认证错误,可以重新请求一个认证token. 二.详细流程举例 说明:以下例子会使用到cURL( http://curl.haxx.se/)和OpenStack APIs( http://developer.open

Yii2实现RESTful风格的API中要注意的坑

Yii2实现RESTful风格的API的流程如下:1.WEB前端(frontend)和后端(backend)的同级目录,新建一个文件夹,命名api,api中文件完全复制一份原始的backend中文件即可 2.需要修改common\config\bootstrap.php文件,对新建的应用增加alias别名 Yii::setAlias('@api', dirname(dirname(DIR)) . '/api'); 3.保证你的web服务器开启rewrite规则!配置apache或nginx!这里

RestFul Api 定义流程规范

(1)整理项目需求,编写Api需求文档,包括Api返回结果,查询参数等等. (2)定义RestFul Api接口. (3)测试RestFul Api接口. (4)编写Api说明文档,包括Api的名称,路径,Http方法,请求参数,功能模板,返回结果等等,方便各模块研发人员和测试人员使用. (5)测试人员测试Api,主要测试系统性能,还有一些特出场景测试,例如多线程,并发操作.编写Api测试报告 (6)Api接口调用,项目研发阶段. 备注:上述5和6可以同时进行,互不影响.主要产生三个Api文档:

测开大佬告诉你:如何5分钟快速创建restful风格的API接口-使用django restframework框架

一.思考?? 1.创建API接口难吗? 软件测试工程师: 只测过API接口, 从没创建过 应该需要掌握一门后端开发语言和后端开发框架吧!? 脑容量有限,想想就可怕 2.如何创建API接口呢? 使用Django restframework能快速创建符合restful风格的API接口 通过Django restframework框架提供的序列化器.视图集可轻轻松松实现 简单高效,学习成本低 二.搭建项目工程???? 1.创建项目 打开pycharm 创建项目 使用豆瓣源安装Django Django

DRF之REST规范介绍及View请求流程分析

编程是数据结构和算法的结合,而在Web类型的App中,我们对于数据的操作请求是通过url来承载的,本文详细介绍了REST规范和CBV规范和CBV请求流程. 编程即数据结构和算法的结合.简单的程序可能不需要跟用户交互数据,但是现代的应用程序几乎都需要跟用户进行交互,不分应用程序类型,不管是CS型还是BS型的程序都是如此,而Python最擅长的Web App即BS型的程序,就是通过url和http来跟用户进行数据交互的,通过url和http请求,用户可以操作服务器端的程序,主要操作分为:增.删.改.

PHP实现RESTful风格的API实例(一)

(关于Yii2的RESTful教程请看: Yii2框架RESTful API教程) 最近看了一些关于RESTful的资料,自己动手也写了一个RESTful实例,以下是源码 目录详情: restful/ Request.php 数据操作类 Response.php 输出类 index.php 入口文件 .htaccess 重写url Request.php :包含一个Request类,即数据操作类.接收到URL的数据后,根据请求URL的方式(GET|POST|PUT|PATCH|DELETE)对数

PHP实现Restful风格的API(转)

Restful是一种设计风格而不是标准,比如一个接口原本是这样的: http://www1.qixoo.com/user/view/id/1表示获取id为1的用户信息,如果使用Restful风格,可以变成这样: http://www1.qixoo.com/user/1可以很明显的看出这样做的好处: 1.更简洁的URL,对程序员友好 2.不暴露内部代码结构,更安全 那么,如何实现这个接口呢?首先,我们需要接收到/user/1部分. $path = $_SERVER['PATH_INFO'];$ar

Ceilometer RESTful框架

ceilometer-api使用pecan和flask来构建restful api,这里简单介绍一下pecan和flask的使用. ceilomter-api服务启动流程 /usr/bin/ceilometer-api ... from ceilometer.cli import api if __name__ == "__main__": sys.exit(api())... /usr/lib/python2.6/site-packages/ceilometer/cli.py ...

PHP实现Restful风格的API

Restful是一种设计风格而不是标准,比如一个接口原本是这样的: http://www1.qixoo.com/user/view/id/1表示获取id为1的用户信息,如果使用Restful风格,可以变成这样: http://www1.qixoo.com/user/1可以很明显的看出这样做的好处: 1.更简洁的URL,对程序员友好 2.不暴露内部代码结构,更安全 那么,如何实现这个接口呢?首先,我们需要接收到/user/1部分. $path = $_SERVER['PATH_INFO'];$ar