代码之家  ›  专栏  ›  技术社区  ›  Brian Jenkins

使用Python的请求库执行URL重写时出现问题

  •  2
  • Brian Jenkins  · 技术社区  · 6 年前

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

    json=get_json() 在里面 requests.post . 但是,当初始请求为GET时,它没有任何JSON,因此我得到一个400错误,错误为“未能解码JSON对象:期望值:第1行第1列(char 0)”。

    我试过了 json=request.data 相反,我得到“TypeError:bytes类型的对象不是JSON可序列化的”。

    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
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   davidism    6 年前

    替换 json=request.get_json() 具有 data=request.get_data() .

    data 参数 requests.request() takes a dictionary, list of tuples, bytes, or file-like object ,和烧瓶 request.get_data()