在Flask响应中设置HTTP状态文本
问题描述:
如何在Flask中设置响应的HTTP状态文本?在Flask响应中设置HTTP状态文本
我知道我可以返回一个字符串的状态码
@app.route('/knockknock')
def knockknock():
return "sleeping, try later", 500
但是,套在身上,我想改变从“内部服务器错误” HTTP状态文字为“睡眠,稍后再试”。
看来在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
答
也许这个文档会有帮助,你可以定制你自己的错误页面。
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"
作品。
对不起,误会。
+0
我没有在该文档中看到任何关于HTTP状态文本的提及。 – sba
答
我不是这方面的专家,但恐怕这只会通过的monkeypatching是可能的。
烧瓶返回werkzeug Response
对象,并且似乎状态代码的原因是hardcoded在http.py
。
同样,一些monkeypatching可能已经足以改变你的应用程序,但是。
简单而甜美 – sba