在 Flask 响应中设置 HTTP 状态文本

sba*_*sba 5 python http flask

如何在 Flask 中设置响应的 HTTP 状态文本?

我知道我可以返回一个带有状态码的字符串

@app.route('/knockknock')
def knockknock():
    return "sleeping, try later", 500
Run Code Online (Sandbox Code Playgroud)

但这设置了正文,我想将 HTTP 状态文本从“内部服务器错误”更改为“正在睡觉,稍后再试”。

这似乎在 Flask/Werkzeug 中是不可能的。它没有在任何地方提及。但也许我错过了什么?

小智 5

以下将在 Flask 中工作。Flask 可以在返回响应时使用状态代码或描述。描述显然也可以包含代码(从客户端来看它是相同的)。但是请注意,这不会从 Flask 端生成默认错误描述。

from flask import Flask
app = Flask(__name__)

@app.route('/knockknock')
def knockknock():
    return "", "500 sleeping, try later"
Run Code Online (Sandbox Code Playgroud)

这是 curl 命令的输出,

curl -i http://127.0.0.1:5000/knockknock

HTTP/1.0 500 sleeping, try later
Content-Type: text/html; charset=utf-8
Run Code Online (Sandbox Code Playgroud)