gpt4 book ai didi

python - 使用 Python 的请求库执行 URL 重写的问题

转载 作者:太空宇宙 更新时间:2023-11-04 02:19:43 25 4
gpt4 key购买 nike

我正在尝试使用 Requests 将发送到 Flask 端点的请求代理到另一个 URL。

我想传递任何发布的数据,所以我在 requests.post 中使用了 json=get_json()。但是,当初始请求为 GET 时,它没有任何 JSON,因此我收到 400 错误“无法解码 JSON 对象:预期值:第 1 行第 1 列(字符 0)”。

我尝试使用 json=request.data,但我得到“TypeError:'bytes' 类型的对象不是 JSON 可序列化的”。

如何在不假设数据为 JSON 的情况下获取数据?如何在不假设数据为 JSON 的情况下将数据传递给 Requests?

from flask import request
import requests

@app.route("/pas/<path:arg>", methods=("GET", "POST", "PUT", "DELETE"))
def proxy(arg):
url = f"http://{config.pasUrl}:{config.pasPort}/{arg}?{request.query_string.decode('utf-8')}"
out_request = requests.request(
method=request.method,
url=url,
headers=request.headers,
json=request.get_json(),
)
return out_request.text

最佳答案

json=request.get_json() 替换为 data=request.get_data()

requests.request()data 参数takes a dictionary, list of tuples, bytes, or file-like object , Flask 的 request.get_data() 返回请求主体的原始字节。

关于python - 使用 Python 的请求库执行 URL 重写的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51910391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com