烧瓶错误:如果烧瓶后端发生故障,该错误如何传播到前端?

时间:2020-05-20 00:38:00

标签: api rest flask

考虑一个简单的应用程序,用户填写表格以将两个数相除,在路由中,表格数据进行处理(制成浮点数),然后作为参数传递给具有除法逻辑的python脚本函数。

由于除以0逻辑在终端中作为自定义消息处理。如何将这一自定义消息与500条错误消息一起发送回前端UI?尝试在此处制作一个宁静的烧瓶应用程序。

到目前为止,我可以中止并显示一条自定义消息,但不能显示从后端传播的消息。还研究了自定义错误处理,但我想编写外部python脚本以便能够编写自定义消息。

2 个答案:

答案 0 :(得分:0)

您可以使用abort()函数。来自docs

将Flask用于Web API时,可以使用与上述相同的技术来返回对API错误的JSON响应。使用描述参数调用abort()。 errorhandler()会将其用作JSON错误消息,并将状态代码设置为404。

您可以这样实现

@app.route("/div")
def divide():
    x, y = request.form['x'], request.form['y']

    try:
        result = x / y
    except ZeroDivisionError:
        abort(400, description="Your message here")
    else:
        # Proper response

从那里开始,重要的一步是正确地在前端捕获该消息。

答案 1 :(得分:0)

您可以使用Flask错误处理程序(错误代码)来管理错误并将其显示在前端。

@app.errorhandler(500)
def code_500(error):
    return render_template("errors/500.html", error=error), 500

您可以将其他任何内容放入html模板。 您也可以直接调用code_500(error)函数。

如果要自定义页面和消息(401、403、404等),则其他任何HTTP错误代码都适用相同的原理。

如果您在蓝图内,则可以使用app_errorhandler