如何在Flask中设置响应的HTTP状态文本?
我知道可以返回一个带有状态码的字符串。
@app.route('/knockknock')
def knockknock():
return "sleeping, try later", 500
但是这样设置body后,我想把HTTP状态文本从“INTERNAL SERVER ERROR”更改为“休息中,请稍后再试”。
在Flask/Werkzeug中好像没有这种可能。任何地方都没有提到过。但是也许我漏了些什么?
以下代码适用于Flask。当返回响应时,Flask可以使用状态码或描述。描述中显然也可以包含代码(对于客户端而言是相同的)。但请注意,这不会从Flask端生成默认的错误描述。
from flask import Flask
app = Flask(__name__)
@app.route('/knockknock')
def knockknock():
return "", "500 sleeping, try later"
以下是curl命令的输出:
curl -i http://127.0.0.1:5000/knockknock
HTTP/1.0 500 sleeping, try later
Content-Type: text/html; charset=utf-8
我对此并不是专家,但恐怕只能通过猴子补丁来实现。
Flask返回werkzeug Response
对象,而状态码原因似乎在http.py
中硬编码。
同样,一些猴子补丁可能足以为您的应用程序更改这个问题。
也许这份文档会有所帮助,您可以自定义自己的错误页面。
http://flask.pocoo.org/docs/0.12/patterns/errorpages/
通過查看源代碼,在 app.py 中可以找到
if status is not None:
if isinstance(status, string_types):
rv.status = status
else:
rv.status_code = status
所以使用
@app.route('/test')
def tt():
return "status error", "500 msg"
运行正常。
对于误解感到抱歉。