相信大家都知道,用Python来做接口测试,使用的方法很多,如POST、GET等方法请求API参数。
下面就 豆瓣图书的用户收藏信息api来学习Python3+urllib这两个库来实现POST和GET下的api请求实例,附上代码注释:
一、接口相关信息。如下:
二、我们可以把:name换成豆瓣老大阿北的用户名,即https://api.douban.com/v2/book/user/ahbei/collections,来看看阿北平时喜欢看什么书
1.用post方法请求api
#coding:utf-8
#auther:xiaozhong
#Data:2017-11-12 15:30
""""用post方法请求api:这种方式把参数放在请求内容中传递,比较安全"""
importurllib.request,urllib# 把这两个库导入
url ='https://api.douban.com/v2/book/user/ahbei/collections'# 这是要请求的url
data={'status':'read','rating':4,'tag':'小说'}# 根据api文档提供的参数,我们来获取一下阿北读过的书中,他标记了‘小说’这个标签的三星书籍,把这些参数值存在一个dict里
#data = urllib.parse.urlencode(data) # 把参数进行编码
data = urllib.parse.urlencode(data).encode(encoding='UTF8')
url2 = urllib.request.Request(url,data)# 用.Request来发送POST请求,指明请求目标是之前定义过的url,请求内容放在data里
response = urllib.request.urlopen(url2)# 用.urlopen打开上一步返回的结果,得到请求后的响应内容
apicontent = response.read()#将响应内容用read()读取出来
print('用post方法请求api')
print(apicontent)#打印读取到的内容
2.用get方法请求api
#coding:utf-8
#auther:xiaozhong
#Data:2017-11-12 15:30
""""用get方法请求api:这种方式把参数放在直接放在url中"""
url ='https://api.douban.com/v2/book/user/ahbei/collections'
data = {'status':'read','rating':3,'tag':'小说'}
data = urllib.parse.urlencode(data)
url = url +'?'+ data
""""跟post不同的只有这一句,使用?把url和data的内容连接起来,
结果是https://api.douban.com/v2/book/user/ahbei/collecti
ons?status=read&rating=3&tag=%E5%B0%8F%E8%AF%B4"""
response = urllib.request.urlopen(url2)# 用.urlopen打开上一步返回的结果,得到请求后的响应内容
apicontent = response.read()#将响应内容用read()读取出来
print('用get方法请求api')
print(apicontent)#打印读取到的内容
三、运行结果分析
从下图可以看出,POST和GET的请求结果是一致的