如何注册烧瓶的自定义http状态代码?

时间:2019-06-10 15:27:44

标签: python flask

我想将自己的http状态代码添加到我的Flask应用程序中。这是我的代码:

from werkzeug import exceptions

class UnrecognizedParametersOrCombination(exceptions.HTTPException):
    code = 460
    description = 'The query parameters or their combination are not recognized!'


exceptions.default_exceptions[460] = UnrecognizedParametersOrCombination

但是当我打电话给abort(460)时,出现了错误: LookupError: no exception for 460

似乎我没有正确地向werkzeug默认异常注册新的异常。官方文件在这部分上很模糊。我该怎么办?

3 个答案:

答案 0 :(得分:0)

好的,我知道了。根据文件: http://flask.pocoo.org/docs/1.0/errorhandling/ 这是行不通的。我们可以做的是定义一个异常,然后raise()而不是abort()它。看来werkzeug现在不再支持在其默认异常中注册自定义的http状态代码...

所以现在我的工作代码是:

from werkzeug import exceptions

class UnrecognizedParametersOrCombination(exceptions.HTTPException):
    code = 460
    description = 'The query parameters or their combination are not recognized!'


def handle_460(e):
    return render_template('460.html')


app.register_error_handler(UnrecognizedParametersOrCombination, handle_460)

现在我需要使用raise UnrecognizedParametersOrCombination()而不是abort(460)进行响应。因此,响应是200,而不是非官方支持的460。

答案 1 :(得分:0)

尝试中止映射?

abort.mappings[460] = UnrecognizedParametersOrCombination

答案 2 :(得分:0)

您不应该这样做,因为这样会破坏与HTTP状态代码关联的RFC。 HTTP状态代码应该是通用的,不会被滥用。我建议响应一些JSON,例如“ status”:“ 460”,如果要使用自己的调试代码,请不要将它们用作HTTP响应。