学习笔记记录
一、HTTP接口测试要点
http接口组成
查看方式:接口文档,抓包
url地址:统一资源定位符,可以在网络上找到接口
参数:客户端的需求信息
返回值:本次接口请求,最终结果(文案提示,功能是否实现)
验证信息:会话管理,token管理(头部,参数)
二、调用一个接口
调用步骤:
1.填写URL
2、填写参数
3、填写验证(如果需要)
4、查看结果(结果可靠吗?)
代码编写(以百度IP为例,不需要验证)
import requests
res=requests.get('https://qifu-api.baidubce.com/ip/geo/v1/district?ip=113.32.83.134')
print(res.text)
结果展示:
代码编写(网上开源免费的接口网址-聚合数据[手机号码归属地]为例)
接口api:(参数登录后可以查看,每个账号的的APPKEY都是唯一的)
http://apis.juhe.cn/mobile/get
res=requests.get('http://apis.juhe.cn/mobile/get')
print(res.text)
结果展示:
从返回的数据中可以看到,我们缺少了KEY。
那么这个key去哪里找?这时我们需要去看接口文档,发现key确实在参数列表里,但是里面还有其他的参数是必须传递的,我们需要把必须传递的参数都填写上。
如何传递?通常使用字典传递。
代码编写:(记得params=params)
import requests
params = {
"phone": "13429667914", # 需要查询的手机号码
"key": "0450f95d12c319657ee03f20b1979f4b", # 应用APPKEY
}
res=requests.get('http://apis.juhe.cn/mobile/get',
params=params)
# 查看状态码,检查接口是否成功链接
print(res.status_code)
print(res.text)
结果展示:
三、传参方式(具体什么格式,通过抓包在headers下方content-Typec查看)
URL格式参数:
在URL后面以?形式拼接
import requests
res=requests.get('https://qifu-api.baidubce.com/ip/geo/v1/district?ip=113.32.83.134')
#解码unicode-escape
print(res.content.decode('unicode-escape'))
写成字典,用params=传递
import requests
params = {
"phone": "13429667914", # 需要查询的手机号码
"key": "0450f95d12c319657ee03f20b1979f4b", # 应用APPKEY
}
res=requests.get('http://apis.juhe.cn/mobile/get',
params=params)
# 查看状态码,检查接口是否成功链接
print(res.status_code)
print(res.text)
application/x-www-form-urlencoded格式参数(表单):
data=字典(data=params)(主流)
json=字符串(json=json.dumps(params))
application/json;(json格式):
json=字典(json=params)(主流)
data=字符串(data=json.dumps(params))
输出时:print(res.json())
text/xml;字符串格式:
data=字符串
json=字符串
四、查看结果
结果是二进制。二进制又分为两种,一种是字符串,一种是文件。
字符串又分为几种,比如json,字符串,xml
最稳妥的方式是拿结果的二进制。(即:res.content)
然后对其进行编码。
看到b'开头,这是编好码的,可以对其进行解码。
print(res.content)
res_byte=res.content
print(res_byte.decode('utf8'))
如果解码后仍然发现还有\xe6\xb5\x99\xe6\xb1\x9f类似这种格式。
可以将utf8更改为unicode-escape
当然如果知道是什么格式就可以直接使用。
json:res.json()
字符串:res.text
xml :解析成文本,再用xml解析器解析
对于文件,比如说图片。
可以先拿到图片的二进制结果,然后写入一个新图片。
# 先拿到图片的二进制结果
img_content=res.content
# 写入到新建图片
f=open('./new.png',mode='wb')
f.write(img_content)
f.close()
如果是表格,就把png改为xlsx。