You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
3.7 KiB
71 lines
3.7 KiB
import requests
|
|
from typing import Optional
|
|
from flask import session, request
|
|
from config.env import AppConfig
|
|
from config.global_config import ApiBaseUrlConfig
|
|
from server import logger
|
|
|
|
|
|
def api_request_xinf(method: str, url: str, is_headers: bool, params: Optional[dict] = None, data: Optional[dict] = None,
|
|
json: Optional[dict] = None, timeout: Optional[int] = None, stream: Optional[bool] = False):
|
|
api_url = ApiBaseUrlConfig.XinUrl + url
|
|
# api_url = ApiBaseUrlConfig.BaseUrl + url
|
|
print("*****************")
|
|
print(api_url)
|
|
method = method.lower().strip()
|
|
# user_agent = request.headers.get('User-Agent')
|
|
# authorization = session.get('Authorization') if session.get('Authorization') else ''
|
|
# remote_addr = request.headers.get("X-Forwarded-For") if AppConfig.app_env == 'prod' else request.remote_addr
|
|
|
|
api_headers = {'accept': 'application/json'}
|
|
try:
|
|
if method == 'get':
|
|
response = requests.get(url=api_url, params=params, data=data, json=json, headers=api_headers,
|
|
timeout=timeout, stream=stream)
|
|
elif method == 'post':
|
|
response = requests.post(url=api_url, params=params, data=data, json=json, headers=api_headers,
|
|
timeout=timeout, stream=stream)
|
|
elif method == 'delete':
|
|
response = requests.delete(url=api_url, params=params, data=data, json=json, headers=api_headers,
|
|
timeout=timeout, stream=stream)
|
|
elif method == 'put':
|
|
response = requests.put(url=api_url, params=params, data=data, json=json, headers=api_headers,
|
|
timeout=timeout, stream=stream)
|
|
elif method == 'patch':
|
|
response = requests.patch(url=api_url, params=params, data=data, json=json, headers=api_headers,
|
|
timeout=timeout, stream=stream)
|
|
else:
|
|
raise ValueError(f'Unsupported HTTP method: {method}')
|
|
|
|
data_list = [params, data, json]
|
|
if stream:
|
|
response_code = response.status_code
|
|
response_message = '获取成功' if response_code == 200 else '获取失败'
|
|
else:
|
|
# response_code = response.json().get('code')
|
|
# response_message = response.json().get('message')
|
|
return response.json()
|
|
session['code'] = response_code
|
|
session['message'] = response_message
|
|
if response_code == 200:
|
|
logger.info("[api]请求人:{}||请求IP:{}||请求方法:{}||请求Api:{}||请求参数:{}||请求结果:{}",
|
|
session.get('user_info').get('user_name') if session.get('user_info') else None,
|
|
"remote_addr", method, url,
|
|
','.join([str(x) for x in data_list if x]),
|
|
response_message)
|
|
else:
|
|
logger.warning("[api]请求人:{}||请求IP:{}||请求方法:{}||请求Api:{}||请求参数:{}||请求结果:{}",
|
|
session.get('user_info').get('user_name') if session.get('user_info') else None,
|
|
"remote_addr", method, url,
|
|
','.join([str(x) for x in data_list if x]),
|
|
response_message)
|
|
|
|
return response if stream else response.json()
|
|
except Exception as e:
|
|
logger.error("[api]请求人:{}||请求IP:{}||请求方法:{}||请求Api:{}||请求结果:{}",
|
|
session.get('user_info').get('user_name') if session.get('user_info') else None,
|
|
"remote_addr", method, url, str(e))
|
|
session['code'] = 500
|
|
session['message'] = str(e)
|
|
|
|
return dict(code=500, data='', message=str(e))
|
|
|