终于开始了正式写到发送请求的模块了。
本节结尾会放上最新的项目代码 网盘地址
我们首先打开我们上次没写完的api_send后台函数:
我们梳理一下思路: 现在我们已经拿到了接口的所有请求数据。已经完全可以进行一次请求了。
但是因为编码格式的不同,请求的代码也稍微有些不同。
所以这里的请求我们要用if来逐个判断编码格式
(ps:在之后的章节我们会加入很多功能,全局host/header/加密算法/登陆态/全局变量/预置变量/文件上传/证书/代理/等等很多很多,基本都要在这个函数中进行处理。大家也不要总问什么时候才能结束了,一个平台可不是一个简单的脚本/或一个小功能,它基本不会有结束的时候,而会一直的迭代更新优化下去。当然什么时候可以用起来呢?全看你的需求是什么了。最简单的管理项目和接口并能发出请求调试保存的基础功能,那么很快就可以完工投入使用了。注意目前第一阶段的各种编码格式调用并不是最完善的,只是最简单能达到效果的调用方法,后期章节会逐渐完善。)
首先在views.py文件开头导入requests模块:
注意,header应该是json格式,但是我们从前端拿到的是字符串,所以我们要在最开始获取的时候直接把header从字符串转变为字典。
然后我们还要处理好完整的url,也就是host + url。而且要处理好使用者常犯的错误:
拼接时容易出现俩个/
如下所示:
正确的 :
host = 'http://www.xxx.com 注意结尾没有/
url = '/abc/def' 注意开头有/
拼接后 : http://www.xxx.com/abc/def
常出现的错误:
host = 'http://www.xxx.com/ 注意结尾有/
url = '/abc/def' 注意开头有/
拼接后 : http://www.xxx.com//abc/def 拼接处出现重复的/
host = 'http://www.xxx.com 注意结尾没有/
url = 'abc/def' 注意开头没有/
拼接后 : http://www.xxx.comabc/def 拼接处出没有/
所以我们要简单的处理一下再拼接:
url就是我们最后得到的完整url,后续发送请求全直接使用url
然后我们先写一个最简单的 当编码方式为 none时的情况:
其中的请求方式,get还是post这种,都是直接传入大写字符串即可如:'GET' 'POST' , 所以我们传入的就是ts_method.upper()
然后我们去写form-data:
其中的fiels是文件流,我们后续会对其进行补充,暂时就先忽略这个功能。
paylaod是一个字典,把我们的字符串格式的二元列表转变成字符串。
然后我们去写x-www-form-urlencoded:
注意需要修改了请求头header中的content-type
然后我们去写raw的五个小弟弟:
这五个的请求代码基本一致,只有请求头的参数不同。所以我们简便写一下:
注意这里是else开头了。
当我们全部写完后,发现,肯定会声明一个response变量,这就是接口这次请求的引用,我们可以从它身上拿到我们想要的一切,如返回体,http状态码,响应时间等等。
我们把这个返回体获取到然后返回给前端即可(删掉上节写死的返回体)
好了。简单看看有没有报错:
我随便输入的host和url,返回体是404找不到这个页面,目前看来是没有报错,证明我们的链路都打通了。
但是这不代表这可以直接使用了,因为很多很多异常处理我们都没有做,正常使用中体验会很差。所以下节课我们会针对各种异常情况作出处理,比如没写host啊,超时啊,使用者不知道现在是否请求中等等。
最后不管你有什么bug,不管什么细节写不出来。
都可以直接下载源码,对照还是覆盖全凭你了。
(之后最新的代码包只会实时放在这个接口测试平台系列这个目录里。大家可以任意时间去下载,不用在辛苦的找正文里的链接了)