小编B.O*_*dot的帖子

Flask.abort() 到底做了什么?

我实际上正在使用烧瓶。我使用 Flask 来运行服务器,该服务器将由 chrome 扩展 (js) 请求。

从扩展请求服务器非常简单:我使用chrome.runtime.sendMessage()方法。此方法还提供回调函数,以 JSON 对象(来自服务器的响应)作为参数。

例如,假设我的服务器上有这条路由:

@app.route('/users', methods=['POST'])
    def api_login():
        if 'username' not in request.json :
            return jsonify(success=false)
        else :
            return jsonify(success=true)
Run Code Online (Sandbox Code Playgroud)

然后,我可以在我的扩展中,更准确地说是在回调函数中,检查成功值:

function(response) {
    if(response.success){
        console.log("Login ok !")
    }
}
Run Code Online (Sandbox Code Playgroud)

但现在,我的团队不想再依赖它,而是想使用 http 错误代码。我知道flask有一个中止功能,但是在阅读文档时,我很难理解它的真正作用。当我调用我的路线时:

else:
    abort(422, {"error":"Missing parameters"})
Run Code Online (Sandbox Code Playgroud)

我如何在扩展(js)上使用这些信息?调用 abort 时,flask 是否会自动返回特定的 JSON 对象?如何查看错误代码?我想在客户端代码中做类似的事情:

if(response.status == 422) {
    console.log("Error")
}
Run Code Online (Sandbox Code Playgroud)

阅读所有关于 abort() 的 StackOverflow 线程,我得到的线索之一是使用装饰器 @app.errorhandler(code) 定义一个特定的错误函数:

@app.errorhandler(422)
def myErrorCase(error):
    return jsonify(status=422, error="missing parameters")
Run Code Online (Sandbox Code Playgroud)

但我认为还有更直接的方法。

感谢您的帮助。

javascript python google-chrome flask

6
推荐指数
1
解决办法
2万
查看次数

标签 统计

flask ×1

google-chrome ×1

javascript ×1

python ×1