我正在使用 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