HTTP接口测试
简单介绍:
HTTP请求组成:
请求行:(如:GET /library/search.json HTTP/1.1)
包含请求方法(get、post、put、delete…)
请求url(不是完整的url,而是出去了host的部分)
HTTP版本
请求头:
包含一些客户端环境信息,身份验证信息(键值对的形式)
如图:
空行:一行空行表示,告诉服务器,请求头到此为止
消息体:
客户端向服务端发送请求携带的一些参数信息
HTTP响应组成:
响应行:(HTTP/1.1 200 OK)
包含:协议的版本、状态码、简单的描述信息
响应头:
空行:
响应体:
GET类型
import requests
无参:
requests.get('对应的url')
有参:
response = requests.get('对应的url',params ={'参数名1':'参数值1','参数名2':'参数值2',...})
带请求头:
response = requests.get('对应的url',headers ={'参数名':'参数值'},params={xxx})
POST类型
无参:
response = requests.post('对应的url')
有参:
参数类型:Content-Type:application/x-www-form-urlencoded
response = requests.post('url',data='xxx')
参数类型:Content-Type:application/json
response = requests.post('url',json='xxx')
带请求头:
response = requests.post('对应的url',headers ={'参数名':'参数值'})
对响应的处理
#将结果转换为json格式,根据需要获取里边的值
rejson = response.json()
rejson['key']
#以字节的方式去显示,中文显示为字符
response.content
#查看响应体,以文本的方式去显示
response.text
#查看cookie
cookies= response.cookies
sessionId = cookies['sessionid'] #获取sessionId
json和字符串的转换:
json.dumps(xxx),将字典转换为字符串
import json
data = {
'name':'zhangsan',
'age':10
}
print(json.dumps(data)) //{"name": "zhangsan", "age": 10}
print(type(json.dumps(data))) //<class 'str'>
json.loads(xxx),将字符串转换为字典
import json
data = '{"name": "zhangsan", "age": 10}'
print(json.loads(data)) //{'name': 'zhangsan', 'age': 10}
print(type(json.loads(data))) //<class 'dict'>
带cookie
两种方式:
直接传递:cookies
response = requests.post('url',cookies={'cookie':'xxx'},json='')
将cookies放在headers里:
response = requests.post('url',headers={'cookie':'xxx','参数1':'值1'},json='')
注:把cookie放在headers里进行传递,cookie不能有空格