好,时隔半月的 实战系列继续更新。
让我们先回顾下现在的进度:
全局变量组的增删改查已经做完了。
然后我们想先插入到接口调试层功能里。
这其中涉及到 变量的占位 和替换。
我们做了一个大字符串的替换公共函数。
然后把url,header host等都塞进去换一遍出来,都成功了。
上节课最后我们说要开始弄复杂的body了。其实body也并不是很复杂,我们只需要记住:
body存在数据库的时候也是字符串的形式,虽然不同的请求体类型让他们长得像列表,像字典,但从数据库或前端刚提出来 都是字符串,而之前是在要发送实际请求时候,才会变成各种字典等格式。
而我们的替换,采用忠实替换法则的话,就是直接给它在字符串的时候,替换变量。然后如果变成字典等操作出错,那就是用户的问题,比如一个请求体如下:
{"A":"zxc"}
用户想把这个zxc字符串用变量表示后,在body中这么占位:
{"A":~value~}
然后我们忠实替换后变成
{"A":zxc}
结果一json.loads,直接报错。那这就是用户使用问题。我们可以提示。
让他改成:
{"A":"~value~"}
这样,再替换后就是:
{"A":"zxc"}
就成功了。
所以我们现在打开我们的views.py,找到Api_send这个函数,也就是调试层发送请求。
可以看到我们的url,host,header等都经过了
global_datas_replace
这个公共替换函数的洗礼,现在我们把body也这么洗了。
然后重启服务,开始去测试,我打开我的项目:
可以看到,依然有俩组变量,一个数字,一个字符串:
我顺便给views加个print,看看实际的请求体替换结果:
然后在接口调试层设置:
请求看结果:
没有任何报错,因为请求的是x度,所以参数随便写,输出请求体也成功替换了,这里为什么123456不是整形呢?是因为form-data的关系,遵从postman的风格和行业依从性,用户输入的一切都按字符串处理。
然后我们试试在raw-json这种常用情况下:
注意,这里的设置,uuid外并没有加引号,因为它是整形的。:
输出如上图,可以看到 的确是忠实替换,123456变成整形也没错~
好了,本节内容到此结束。欢迎继续分享和追更。
这里要说下,这么复杂的底层设置,按理说我们的自测是不充分的。因为这个替换操作有可能引起一些其他功能的bug,当然也可能没有。我们之后攒一攒会单独找一期进行充分测试和修复各种问题。