| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- import requests
- from typing import Dict,Optional
- from Config.APIConfig import BASE_URLS, ENV, TIMEOUT
- from Utils.Log import Logger
- logger = Logger(log_name="API_Base.log")
- class RequestHandler:
- """封装请求方法"""
- def __init__(self):
- self.session = requests.Session()
- self.base_url = BASE_URLS.get(ENV, '')
- def _request(self, method: str, url: str, **kwargs) -> requests.Response:
- """基础请求方法"""
- # 拼接完整URL
- if not url.startswith(('http://', 'https://')):
- url = f"{self.base_url}{url}"
- # 设置超时
- kwargs.setdefault('timeout', TIMEOUT)
- # 记录请求日志
- logger.info(f"Request: {method.upper()} {url}")
- if kwargs.get('params'):
- logger.info(f"Request params: {kwargs['params']}")
- if kwargs.get('json'):
- logger.info(f"Request json: {kwargs['json']}")
- if kwargs.get('data'):
- logger.info(f"Request data: {kwargs['data']}")
- try:
- response = self.session.request(method, url, **kwargs)
- # 记录响应日志
- logger.info(f"Response status: {response.status_code}")
- logger.info(f"Response content: {response.text[:500]}...") # 限制日志长度
- return response
- except requests.exceptions.RequestException as e:
- logger.error(f"Request failed: {str(e)}")
- raise
- def get(self, url: str, params: Optional[Dict] = None, **kwargs) -> requests.Response:
- """GET请求"""
- return self._request('GET', url, params=params, **kwargs)
- def post(self, url: str, data: Optional[Dict] = None,
- json: Optional[Dict] = None, **kwargs) -> requests.Response:
- """POST请求"""
- return self._request('POST', url, data=data, json=json, **kwargs)
- def put(self, url: str, data: Optional[Dict] = None,
- json: Optional[Dict] = None, **kwargs) -> requests.Response:
- """PUT请求"""
- return self._request('PUT', url, data=data, json=json, **kwargs)
- def delete(self, url: str, **kwargs) -> requests.Response:
- """DELETE请求"""
- return self._request('DELETE', url, **kwargs)
- def request(self, method: str, url: str, **kwargs) -> requests.Response:
- """通用请求方法"""
- return self._request(method, url, **kwargs)
- # 创建全局请求对象
- request_handler = RequestHandler()
|