如何使用 Flask 正确解码文本内容 POST

How to correctly decode text content POST with Flask

在 Flask 中处理包含“text/plain”数据的 POST 请求时,处理字符编码的正确方法是什么?

测试应用程序:

from flask import Flask
from flask import request

app = Flask(__name__)

@app.route("/put-text", method=['POST'])
def hello_world():
    print("data", request.data)
    return {}

示例请求

import requests

url = 'http://127.0.0.1:5000/put-text'
data = 'The quick brown fox jumped over the lazy dog."
headers = {
    "Content-Type:":"text/plain",
}

res = requests.post(url, data=data, headers=headers)

有了这个,request.data 是字节,我可以相对容易地 decode,但是我如何使这段代码健壮以支持 unicode 或不同的文本编码?

根据 Flask docsrequest.get_data(as_text=True) 可能符合您的要求:

@app.route("/put-text", method=['POST'])
def hello_world():
    text = request.get_data(as_text=True)
    # do something with the `text`...
    return {}

据推测,Flask 将按照客户端在各自 header 中指定的正确编码对文本进行解码。前提是客户端指定了正确的编码,当然...