feat(session): session二次封装
- 重写了request和send方法 - 添加了requests库 - 增加了日志打印
This commit is contained in:
@@ -9,6 +9,7 @@ readme = "README.md"
|
||||
python = "^3.10"
|
||||
|
||||
|
||||
requests = "^2.32.3"
|
||||
[build-system]
|
||||
requires = ["poetry-core"]
|
||||
build-backend = "poetry.core.masonry.api"
|
||||
|
||||
48
session.py
Normal file
48
session.py
Normal file
@@ -0,0 +1,48 @@
|
||||
#!/usr/bin/env python
|
||||
# coding=utf-8
|
||||
|
||||
"""
|
||||
@author: chen wei
|
||||
@Software: PyCharm
|
||||
@contact: t6i888@163.com
|
||||
@file: session.py
|
||||
@date: 2024 2024/9/12 21:56
|
||||
@desc:
|
||||
"""
|
||||
from urllib.parse import urljoin
|
||||
import logging
|
||||
import requests
|
||||
from requests import Response, PreparedRequest
|
||||
|
||||
|
||||
logger = logging.getLogger("requests.session")
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
|
||||
|
||||
class Session(requests.Session):
|
||||
def __init__(self, base_url=None):
|
||||
super().__init__() # 先执行父类的初始化
|
||||
self.base_url = base_url # 在执行子类的初始化操作
|
||||
|
||||
def request(self, method, url: str, *args, **kwargs) -> Response:
|
||||
if not url.startswith("http"):
|
||||
# 自动添加baseurl
|
||||
url = urljoin(self.base_url, url)
|
||||
return super().request(method, url, *args, **kwargs) # 按照原有方式执行
|
||||
|
||||
def send(self, request: PreparedRequest, *args, **kwargs) -> Response:
|
||||
logger.info(f"发送请求>>>>>> 接口地址 = {request.method} {request.url}")
|
||||
logger.info(f"发送请求>>>>>> 请求头 = {request.headers}")
|
||||
logger.info(f"发送请求>>>>>> 请求正文 = {request.body} ")
|
||||
|
||||
resp = super().send(request, **kwargs) # 按照原有方式发送请求
|
||||
|
||||
logger.info(f"接收响应 <<<<<< 状态码 = {resp.status_code}")
|
||||
logger.info(f"接收响应 <<<<<< 响应头 = {resp.headers}")
|
||||
logger.info(f"接收响应 <<<<<< 响应正文 = {resp.content}")
|
||||
|
||||
return resp
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
...
|
||||
Reference in New Issue
Block a user