Python三方包Requests分享(Postman对照版)

Python源码下载

postman文档下载

Request三方库介绍

requests 支持http的各种请求,比如:

GET:请求指定的页面信息,并返回实体主体。

HEAD:只请求页面的首部。

POST:请求服务器接受所指定的文档作为对所标识的URL的新的从属实体。

PUT:从客户端向服务器传送的数据取代指定的文档的内容。

DELETE:请求服务器删除指定的页面。

OPTIONS:允许客户端查看服务器的性能。

官方中文教程地址:http:/docs.python-.requests.org/zhCN/latest/user/quickstart.html

安装ruquests

  1. 进入终端, 输入pip install requests, 点击回车, 看到success字样就是安装成功了

  2. 验证是否安装成功

import requests


if __name__ == '__main__':
    print(requests.__version__)
  1. 运行

常用请求之GET请求--requests.get()

构造请求头参数, params形参

  1. postman演示

    1. 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&param2=222
# {'code': '00', 'data': {'param1': '111', 'param2': '222'}}

常用请求之POST请求--requests.post()

构造请求体, formdata, data形参

  1. postman演示

    1. 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形参

  1. postman展示    

    1. python展示

      1. 方式一, 设置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())
  1. 方式二, 别那么麻烦了, 直接将入参赋给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

  1. 返回正常状态码: 200

    1. postman演示

    2. 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'}}
  1. 路由错误状态码: 404

    1. postman展示

  2. 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
  1. 服务器异常状态码: 500

    1. postman演示

    2. 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
  1. 重定向状态码: 302

    1. postman演示

    2. 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是这样的
  1. 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的值, 调用获取人员信息的接口以达到获取人员信息的目的

  1. postman

    1. 获取人员列表, 并将返回结果设置为环境变量

    2. 获取人员列表中的id,- 然后通过id获取人员信息

  2. 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}}

常用场景之上传文件

  1. postman演示

  2. 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': '这是一个文件'}}

常用场景之保存文件

  1. postman演示

  2. 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头

  1. postman演示

  2. 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!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jair233

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值