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

在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 
+0

简单而甜美 – sba

也许这个文档会有帮助,你可以定制你自己的错误页面。

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对象,并且似乎状态代码的原因是hardcodedhttp.py

同样,一些monkeypatching可能已经足以改变你的应用程序,但是。