diff --git a/pyproject.toml b/pyproject.toml index ad7964d..2459fa9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -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" diff --git a/session.py b/session.py new file mode 100644 index 0000000..62366a7 --- /dev/null +++ b/session.py @@ -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__': + ...