02. Requests请求对象构建
2024年10月28日大约 2 分钟
02. Requests请求对象构建
1. Requests库入门示例
需求
- 使用Requests库访问百度 http://www.baidu.com,并查看响应结果
步骤
# 1. 导入requests库
import requests
# 2. 准备测试数据
url = 'http://www.baidu.com/'
# 3. 发送接口请求
response = requests.get(url)
# 4. 查看响应结果
print(f"响应状态码:{response.status_code}")
print(f"响应文本:\n{response.text}")
2. 发送接口请求
- 格式
- requests.请求方法(url="URL地址", params={k:v}, data={k:v}, json={k:v}, headers={k:v}, cookies="cookie数据")
- 说明
- 常见的请求方法
- get/post/put/delete
- url: 请求的url地址 - string
- params:查询参数 - 字典
- data:表单格式的请求体 - 字典
- json:json格式请求体 - 字典
- headers:请求头 - 字典
- cookies:cookie数据 - string
- 常见的请求方法
请求体 json/data 只能有一个
公共配置 config.py
import os.path BASE_URL_MALL = 'http://192.168.10.31:9003' BASE_URL_OA = 'http://192.168.10.31:9091' BASE_PATH = os.path.dirname(__file__) # 当前文件所在目录 if __name__ == '__main__': print(BASE_URL_OA) print(BASE_URL_MALL) print(BASE_PATH)
1. GET请求查询参数-params
- 发送 get 请求,指定 url,获取响应结果
# 方法1:拼接法
# resp = requests.get(url=config.BASE_URL + "/Home/Goods/search.html?q=iPhone")
# 方法2:params参数
resp = requests.get(
url=config.BASE_URL + "/Home/Goods/search.html",
params={"q": "iPhone"}
)
# 查询响应结果
print(resp.text)
2. POST请求表单参数-data
- TPshop项目登录接口需求:
- 请求数据: username: 13088888888, password: 123456, verify_code: 1234
- 分析:
- 请求方式:POST
- 请求路径:http://192.168.10.31:9003/index.php?m=Home&c=User&a=do_login
- 请求参数:表单数据
import requests
# 发送 post 请求,指定url、请求头、请求体, 获取响应结果
import config
resp = requests.post(
url=config.BASE_URL_MALL + "/index.php?m=Home&c=User&a=do_login&t=0.7094195931397276",
# 此headers可以省略,会根据data自动识别
headers={"Content-Type": "application/x-www-form-urlencoded"},
data={"username": "13012345678", "password": "1234567", "verify_code": "8888"}
)
# 打印响应结果 - 文本
print(f'resp.text = {resp.text}')
# 打印响应结果 - json
print(f'resp.json() = {resp.json()}')
# resp.text 内部使用Unicode编码
# resp.json() 内部会自动对中文转码
3. POST请求-提交JSON数据
- 需求
- 请求IHRM项目的登录接口,请求数据为json格式
- 分析
- 请求方式:POST
- 请求路径:http://ihrm-java.ithiema.net/api/sys/login
- 请求数据:请求体-JSON数据({"mobile":"13800000002", "password":"123456"})
import requests
# 发送 post 登录请求,指定 url、请求头、请求体,获取响应结果
import config
resp = requests.post(
url=config.BASE_URL_OA + "/api/sys/login",
# 此headers可以省略,会根据json自动识别
headers={"Content-Type": "application/json"},
json={"mobile": "13800000002", "password": "123456"}
)
# 打印响应结果
print(resp.json())
4. 发送其他HTTP请求
如何使用requests库发送其他 HTTP 请求类型?
requests.put(url,
**kwargs
)requests.delete(url,
**kwargs
)
【发送 put、delete请求】使用Requests库发送 ihrm系统 修改员工信息、删除员工信息 请求。
# -------- 修改 put
import requests
resp = requests.put(url="http://ihrm-test.ithiema.net/api/sys/user/1071632760222810112",
headers={"Authorization": "Bearer 4c51c601-c3f7-4d1a-a738-7848f2439f45"}, # Authorization= Bearer + " " + 登录返回的认证
json={"username": "齐天大圣"})
print(resp.json())
# -------- 删除 delete
import requests
resp = requests.delete(url="http://ihrm-test.ithiema.net/api/sys/user/1467780995754229760",
headers={"Authorization": "Bearer 4c51c601-c3f7-4d1a-a738-7848f2439f45"}) # # Authorization= Bearer + " " + 登录返回的认证
print(resp.json())