前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >接口测试平台url数据流转说明:必看!!!

接口测试平台url数据流转说明:必看!!!

作者头像
我去热饭
发布2022-05-20 09:11:11
6060
发布2022-05-20 09:11:11
举报
文章被收录于专栏:测试开发干货

近期,顶级氪金大佬-榜一大哥,说每次看到接口测试平台的url分发器,路由中的变量,数据流转就发懵。所以我打算特别更新一期,来给大家梳理一下。

首先给大家道个歉,接口测试平台的整个数据控制架构是我几年前自创的,并不是传统的主流,所以虽然能实现功能,但是一些易用性,说明帮助这些都没有很好的落实。加上后期我也回归了主流的设计,所以得给被这块逻辑绕迷糊的同学道个歉。

好,开始正题!

接口测试平台的页面引用逻辑,并不是传统的各个页面内引用菜单页面。而是菜单页面内引用各个其他页面,所以是完全相反。

菜单页面:welcome.html

然后后台views函数中,返回的其实都是welcome.html,比如进入首页:

从上图可以看出,虽然进入的是首页,但是返回给浏览器的却是welcome.html也就是菜单页,然后带了一个字典,字典中包含首页html的名字:Home.html 还有俩个变量数据,一个是用户id叫oid,一个是日志id叫ooid,一个是其他各种数据的集合字典。

(这里解释下:oid是object_id的简写,意为公共的物体变量,谁都可以用,就是占位方便使用的。ooid是other_object_id的简写,就是增加了个变量而已,你要喜欢还可以多写一大堆变量作为某些页面的特殊使用准备)

然后,浏览器打开welcome.html的时候,发现内部居然要引用了一个url (也就是要开始想办法塞入首页html了):

大家看上图,这里调用的是/child/路由,并且后面带了三个参数,其中按照刚刚看到的home函数可以知道,whichHTML是首页的网页名字,oid存放用户id,ooid存放日志id。

好,让我们继续探索,接下来就去urls.py中看看这个/child/路由吧~

上图中,注意,我这里采用了url函数写法,后面的版本django也可以用re_path函数来写,只是re_path和path函数,你就不要写前面的r"^ 和 结尾的$了。

这段url中同样用三个变量来占位,分别是eid,oid,ooid,此时接收到的数据分别对应 whichHTML首页网页名,oid用户id,ooid日志id。

(注意,路由中eid后接的.+ 这在正则里意思是必填,至少有1位字符串才算数。而oid和ooid都是.* 意思就是也可以不写,因为child路由作为一个公共路由,它会被很多不同的函数调用,所以才要做成这样。)

好,然后我们继续探索这段数据流,/child/路由调用了一个名为child的函数,所以我们去views.py中看看这个函数:

如上图,我们知道,接收到的eid就是首页的网页名:Home.html ,oid是用户id,ooid是日志id。

然后又把这三个数据 传给了一个叫做child_json的函数,这个函数的作用就是根据不同的页面和用户id和日志id,来决定要返回真正的具体的数据!这样设计的好处是实现了数据的统一管理和不同用户身份的定制化!

获取回来的数据给到res,很显然res就是一个大字典,然后通过标准的return render函数来返回,不过我们先别着急往下走,先去看看child_json函数到底干了啥:

这里可以看到,child_json函数接收了这三个参数,其中oid和ooid都有默认值为空,这也符合我前面的路由中的设计:oid和ooid只做备用,可以不传的概念。

我们一路跟踪这段数据下来可知道,eid是首页的名字:Home.html ,所以函数内用if来进行判断,如果eid==’Home.html‘ 则走这个分支:

其中比较复杂,我们也没必要全看,就关注下:最后返回的这个res字典即可。

这个字典res中,我们看到了很多数据,比如hrefs,home_log,hosts等等。

最终这个res被child_json返回给child函数,又被继续返回给浏览器:

然后浏览器最终通过/chlid/路由 拿到了应该展示的页面eid:”Home.html’ 和其内部的数据res。

成功在welcome.html中嵌入了这个Home.html页面。并展示给你:

这里大家明白了 eid,oid,ooid等到底是怎么传递了,但其中oid和ooid我一开始就是说了,它们是公共的,也就是任何页面都可以使用的,所以它们具体的含义也是变化的,不同页面给它们的不一样,但总归是在一开始views.py中进入具体页面控制的。

比如我们不用首页做例子,换个页面:

比如项目列表:

如图,项目列表页压根就没用上oid和ooid....

再比如接口库页面:

如图,oid此时变成了项目id,ooid变成了一个page变量。

所以在child_json函数中,oid可以直接当项目id用:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试开发干货 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档