Python源码下载
postman文档下载
Request三方库介绍
requests 支持http的各种请求,比如:
GET:请求指定的页面信息,并返回实体主体。
HEAD:只请求页面的首部。
POST:请求服务器接受所指定的文档作为对所标识的URL的新的从属实体。
PUT:从客户端向服务器传送的数据取代指定的文档的内容。
DELETE:请求服务器删除指定的页面。
OPTIONS:允许客户端查看服务器的性能。
官方中文教程地址:http:/docs.python-.requests.org/zhCN/latest/user/quickstart.html
安装ruquests
-
进入终端, 输入pip install requests, 点击回车, 看到success字样就是安装成功了
-
验证是否安装成功
import requests
if __name__ == '__main__':
print(requests.__version__)
-
运行
常用请求之GET请求--requests.get()
构造请求头参数, params形参
-
postman演示
-
request演示
-
import requests
url = "http://172.16.80.106:8888" # 服务器地址:端口号
rout = "/params" # 路由地址
params = {"param1": "111", "param2": "222"} # 请求参数
rqs_url = url + rout # 拼接服务器地址和路由地址
response = requests.get(url=rqs_url, params=params) # 发送请求
print("请求url: ", response.url)
print(response.json())
# 输出结果
# 请求url: http://172.16.80.106:8888/params?param1=111¶m2=222
# {'code': '00', 'data': {'param1': '111', 'param2': '222'}}
常用请求之POST请求--requests.post()
构造请求体, formdata, data形参
-
postman演示
-
python演示
-
import requests
url = "http://172.16.80.106:8888" # 服务器地址:端口号
rout = "/formData" # 路由地址
data = {"param1": "111", "param2": "222"} # 请求参数
rqs_url = url + rout # 拼接服务器地址和路由地址
response = requests.post(url=rqs_url, data=data) # 发送请求
print("请求url: ", response.url)
print(response.json())
# 输出结果
# 请求url: http://172.16.80.106:8888/formData
# {'code': '00', 'data': {'param1': '111', 'param2': '222'}}
构造请求体, x-www-form-urlencoded, data形参(实现方式同formdata)
构造请求体, json, data形参或者json形参
-
postman展示
-
python展示
-
方式一, 设置header, 将入参转换成json类型赋给形参data
-
-
import json
import requests
url = "http://172.16.80.106:8888" # 服务器地址:端口号
rout = "/jsonData" # 路由地址
data = {"param1": "111", "param2": "222"} # 请求参数
rqs_url = url + rout # 拼接服务器地址和路由地址
header = {"Content-Type": "application/json"} # 需要设置请求内容的类型为json类型
response = requests.post(url=rqs_url, headers=header, data=json.dumps(data)) # 发送请求
print("请求url: ", response.url)
print(response.json())
-
方式二, 别那么麻烦了, 直接将入参赋给json形参
import requests
url = "http://172.16.80.106:8888" # 服务器地址:端口号
rout = "/jsonData" # 路由地址
data = {"param1": "111", "param2": "222"} # 请求参数
rqs_url = url + rout # 拼接服务器地址和路由地址
response = requests.post(url=rqs_url, json=data) # 发送请求
print("请求url: ", response.url)
print(response.json())
# 输出结果
# 请求url: http://172.16.80.106:8888/formData
# {'code': '00', 'data': {'param1': '111', 'param2': '222'}}
为什么不用设置header了
常用场景之判断状态码response.status_code
-
返回正常状态码: 200
-
postman演示
-
python演示
-
import requests
url = "http://172.16.80.106:8888" # 服务器地址:端口号
rout = "/jsonData" # 路由地址
data = {"param1": "111", "param2": "222"} # 请求参数
rqs_url = url + rout # 拼接服务器地址和路由地址
response = requests.post(url=rqs_url, json=data) # 发送请求
print("请求url: ", response.url)
print("状态码:", response.status_code)
print("返回值:", response.json())
# 打印结果
# 请求url: http://172.16.80.106:8888/jsonData
# 状态码: 200
# 返回值: {'code': '00', 'data': {'param1': '111', 'param2': '222'}}
-
路由错误状态码: 404
-
postman展示
-
-
python展示
import requests
url = "http://172.16.80.106:8888" # 服务器地址:端口号
rout = "/jsonData111" # 路由地址
data = {"param1": "111", "param2": "222"} # 请求参数
rqs_url = url + rout # 拼接服务器地址和路由地址
response = requests.post(url=rqs_url, json=data) # 发送请求
print("请求url: ", response.url)
print("状态码:", response.status_code)
# 打印结果
# 请求url: http://172.16.80.106:8888/jsonData111
# 状态码: 404
-
服务器异常状态码: 500
-
postman演示
-
python演示
-
import requests
url = "http://172.16.80.106:8888" # 服务器地址:端口号
rout = "/error" # 路由地址
data = {"param1": "111", "param2": "222"} # 请求参数
rqs_url = url + rout # 拼接服务器地址和路由地址
response = requests.post(url=rqs_url, json=data) # 发送请求
print("状态码:", response.status_code)
print("请求url: ", response.url)
# 打印结果
# 状态码: 500
# 请求url: http://172.16.80.106:8888/error
-
重定向状态码: 302
-
postman演示
-
python演示关闭自动重订向allow_redirects=False
-
import requests
url = "http://172.16.80.106:8888" # 服务器地址:端口号
rout = "/redirect" # 路由地址
data = {"param1": "111", "param2": "222"} # 请求参数
rqs_url = url + rout # 拼接服务器地址和路由地址
# 需要传入allow_redirects=False来防止重定向, 否则会自动重定向
response = requests.post(url=rqs_url, json=data, allow_redirects=False) # 发送请求
print("状态码:", response.status_code)
print("请求url: ", response.url)
# 输入结果
# 状态码: 302
# 请求url: http://172.16.80.106:8888/redirect 此时获取的url是这样的
-
python演示关闭自动重订向allow_redirects=False
import requests
url = "http://172.16.80.106:8888" # 服务器地址:端口号
rout = "/redirect" # 路由地址
data = {"param1": "111", "param2": "222"} # 请求参数
rqs_url = url + rout # 拼接服务器地址和路由地址
# 需要传入allow_redirects=False来防止重定向, 否则会自动重定向
response = requests.post(url=rqs_url, json=data, allow_redirects=True) # 发送请求
print("状态码:", response.status_code)
print("请求url: ", response.url)
# 输出结果
# 状态码: 200 状态码变成了200
# 请求url: http://172.16.80.106:8888/ 此时请求的url也变了
常用场景之获取/处理返回结果, 编写业务流程
业务流程介绍: 通过获取人员列表接口, 获取到列表中的人员的id信息, 然后再通过id的值, 调用获取人员信息的接口以达到获取人员信息的目的
-
postman
-
获取人员列表, 并将返回结果设置为环境变量
-
获取人员列表中的id,- 然后通过id获取人员信息
-
-
python展示
import requests
url = "http://172.16.80.106:8888" # 服务器地址:端口号
rout1 = "/getPersonList" # 获取人员列表路由地址
rqs_url = url + rout1 # 拼接服务器地址和路由地址
response = requests.get(url=rqs_url) # 发送请求, 获取人员列表
print("人员列表:", response.json())
person_id = response.json()['data'][0]['id'] # 提取列表中第一个人的id
rout2 = f"/getInfo?id={person_id}" # 获取人员信息路由地址
rqs_url2 = url + rout2 # 拼接服务器地址和路由地址
response2 = requests.get(url=rqs_url2) # 发送请求, 获取人员列表
print("人员信息:", response2.json())
# 打印结果
# 人员列表: {'code': '00', 'data': [{'id': 1, 'name': '张三'}, {'id': 2, 'name': '李四'}, {'id': 3, 'name': '王五'}]}
#人员信息: {'code': '00', 'data': {'age': 23, 'gender': '男', 'height': 180, 'id': 1, 'name': '张三', 'remark': '正方形男士', 'weight': 180}}
常用场景之上传文件
-
postman演示
-
python演示
import requests
url = "http://172.16.80.106:8888" # 服务器地址:端口号
rout1 = "/upload" # 获取人员列表路由地址
rqs_url = url + rout1 # 拼接服务器地址和路由地址
file = {"file": open("./input1.csv", 'rb')}
data = {
"remark": "这是一个文件"
}
response = requests.post(url=rqs_url, data=data, files=file) # 发送请求, 获取人员列表
print("返回结果:", response.json())
# 打印结果
# 返回结果: {'code': '00', 'data': {'fileUrl': 'http://172.16.80.106:8888/download?filename=input1_20231020111159.csv', 'remark': '这是一个文件'}}
常用场景之保存文件
-
postman演示
-
python演示
import requests
from download import DOWNLOAD_PATH
url = "http://172.16.80.106:8888" # 服务器地址:端口号
rout1 = "/upload" # 获取人员列表路由地址
rqs_url = url + rout1 # 拼接服务器地址和路由地址
file = {"file": open("./input1.csv", 'rb')}
data = {
"remark": "这是一个文件"
}
response = requests.post(url=rqs_url, data=data, files=file) # 发送请求, , 上传文件
print("返回结果:", response.json())
file_url = response.json()['data']['fileUrl'] # 提取文件下载链接
response1 = requests.get(url=file_url) # 获取,返回结果
save_file_name = "./download/result.txt" # 设置文件名
with open(save_file_name, 'w', encoding="utf-8") as fp:
fp.write(response1.text) # 将返回结果保存到本地
常用场景之构造header头
-
postman演示
-
python演示
import requests
url = "http://172.16.80.106:8888" # 服务器地址:端口号
rout1 = "/getHeader" # 路由地址
rqs_url = url + rout1 # 拼接服务器地址和路由地址
header = {"DiyHeader": "This my diy header!"}
response = requests.get(url=rqs_url, headers=header) # 发送请求, 获取人员列表
print("返回结果:", response.text)
# 打印结果
# 返回结果: Host: 172.16.80.106:8888
# User-Agent: python-requests/2.28.1
# Accept-Encoding: gzip, deflate, br
# Accept: */*
# Connection: keep-alive
# Diyheader: This my diy header!