簡體   English   中英

使用 Python 的請求庫執行 URL 重寫的問題

[英]Issues performing URL Rewrite using Python's Requests library

我正在嘗試使用請求將發送到 Flask 端點的請求代理到另一個 URL。

我想傳遞任何發布的數據,所以我在requests.post使用json=get_json() 但是,當初始請求是 GET 時,它沒有任何 JSON,因此我收到 400 錯誤“無法解碼 JSON 對象:期望值:第 1 行第 1 列(字符 0)”。

我嘗試使用json=request.data ,但我得到“TypeError: Object of type 'bytes' is not JSON serializable”。

如何在不假設它是 JSON 的情況下獲取數據? 如何在不假設它是 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

json=request.get_json()替換為data=request.get_data()

requests.request()data參數采用字典、元組列表、字節或類文件對象,而 Flask 的request.get_data()返回請求正文的原始字節。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM