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

标签 python api error-handling flask

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

我目前处理错误的方式是让我的函数同时返回数据和错误,并检查每个级别的数据,最后将数据或错误返回给 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

最佳答案

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

关于python - 使用 Python 和 Flask 返回 API 错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12630224/

相关文章:

sql - 在需要条件的上下文中指定的非 boolean 类型的表达式

php - 如何即时更改 Yii 错误处理程序?

python - 使用 crontab

python - 如何删除这个 numpy ndarray 的第 1、2、7 列?

python - Pandas 基于一列合并不同大小的数据帧

api - import.io URL 返回

rest - TestCafe 脚本,如何调用restApi(使用keycloak)

android - 是否可以支持旧 API 级别的 setScrollY() (ScrollView API 14) 之类的函数?

python - Pandas:从 DataFrame 列制作字典的最有效方法

api - 如何阻止 Python 中的 Keyerror 再次发生或创建异常来处理它?