当前位置:  开发笔记 > 编程语言 > 正文

使用Python和Flask返回API错误消息

如何解决《使用Python和Flask返回API错误消息》经验,为你挑选了1个好方法。

我正在使用Python和Flask设计RESTful API.正如所料,如果一切顺利,API需要接收API请求并返回数据,但在错误的情况下,它需要轻微失败并返回正确的错误.我通常在出现错误时引发异常,但在这种情况下,我需要将错误消息返回给用户(try-catch块?).

我目前处理错误的方法是让我的函数返回数据和错误,并检查每个级别的数据,最后将数据或错误返回给API函数的调用者.

这样做的问题是,当存在多个级别的函数调用时,它会变得很麻烦,需要我的函数多次传递数据和错误,并且每次都执行检查.

有一个更好的方法吗?我可以做些什么改进使错误传播更简单和优雅?

以下是我当前返回错误的示例:

def get_data()
    data1, error = get_some_data() # function not shown
    if data1 is None:
         return None, "could not retrieve data1"
    data2, error = get_some_other_data() # function not shown
    if data2 is None:
         return None, "could not retrieve data2"
    return (data1, data2), None

@app.route("/api/method", methods=['GET'])
def method():
    data, error = get_data()
    if data is None:
        if error is None:
            error = "unknown error"
        return json.dumps({ "error": error }), 500
    return json.dumps({ "data": data }), 200

jfs.. 45

您可以使用abort(http_code)将适当的http代码返回给客户端,或者只是引发非http异常.并使用@app.errorhandler()装饰器为http错误和任意异常提供自定义处理程序.您还可以使用普通的try/except块来准备处理异常.Python不是Go你可以使用异常.



1> jfs..:

您可以使用abort(http_code)将适当的http代码返回给客户端,或者只是引发非http异常.并使用@app.errorhandler()装饰器为http错误和任意异常提供自定义处理程序.您还可以使用普通的try/except块来准备处理异常.Python不是Go你可以使用异常.


Flask文档明确建议避免使用`abort`来支持编写自己的异常类和错误处理程序 - > http://flask.pocoo.org/docs/0.12/patterns/apierrors/
推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有