# 代理方法
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))