# 代理方法
def proxy(target_server):
def inner_proxy(qwer=None):
# 获取原始请求的URL
target_url = target_server + request.full_path
if request.method == 'GET':
response = requests.get(target_url)
elif request.method == 'POST':
# 处理 POST 请求的数据,包括 form-data 和文件
if request.files:
files = {key: (value.filename, value.stream) for key, value in request.files.items()}
response = requests.post(target_url, data=request.form, files=files)
else:
response = requests.post(target_url, data=request.data)
elif request.method == 'PUT':
response = requests.put(target_url, data=request.data)
elif request.method == 'DELETE':
response = requests.delete(target_url)
elif request.method == 'PATCH':
response = requests.patch(target_url, data=request.data)
elif request.method == 'OPTIONS':
response = requests.options(target_url)
# 返回目标服务器的响应
return Response(response.content, status=response.status_code, headers=dict(response.headers))
# 构建响应对象
proxy_response = app.response_class(
response=response.content,
status=response.status_code,
headers=response.headers.items()
)
return proxy_response
inner_proxy.__name__ = random_text(10)
return inner_proxy
# 目标地址
cnocr_server = '<http://localhost:9000>'
# 路由
app.route('/ocr/ocr', methods=['GET', 'POST', 'PUT', 'DELETE'])(proxy(cn_server))