Flask 处理多个错误

Flask handling multiple errors

我有一个用 Flask 制作的简单应用程序。它仅使用 POST 方法。 它需要 2 个数字(在 json 中)并将它们相加。

{"a": 1, "b": 1}

应用程序响应这些数字的总和(也在 json 中)。

{"sum": 2}

代码如下所示:

@appFlask.route('sum', methods=['POST'])
def result():
    data = request.get_json()
    return jsonify({'sum': data['a'] + data['b']})

我想做错误处理。问题是有很多这样的错误,例如对于以下调用,它们应该 return “400 Bad Request” 或者如果文件不在 json.

{"a":1, "b":1, "c":1}
{"a", "a":1, "b":1}
{}
{"a":1}
{"a":0, "b":1}

我怎样才能用最简单的方式做到这一点?有没有办法在一个函数中做到这一点?

您可以使用捕获错误,然后您可以 return“400 错误请求”和 return 数据示例及其对用户的验证。

@appFlask.route('sum', methods=['POST'])
def result():
    try:
       data = request.get_json()
       # check if a or b is not 0
       if data['a'] == 0 or data['b'] == 0:
           raise Exception("Error occurred")
       return jsonify({'sum': data['a'] + data['b']})
    except Exception as e:
       return "400 Bad Request"
    

示例中提到的所有其他调用都会产生将被缓存的错误。

您不必担心 {"a":1, "b":1, "c":1},因为它不会影响代码,但如果您认为它是错误的请求,您需要对其进行检查。

您肯定需要根据您的需要进行检查,因为没有内置的功能。

您可以使用 return 语句传递 HTTP 状态代码。

@appFlask.route('/sum', methods=['POST'])
def result():
    try:
       data = request.get_json()
       if len(data.keys()) != 2 and all(data.values()): #
           return "Invalid Data", 400
       return jsonify({'sum': data['a'] + data['b']}), 200
    except Exception as e:
       return "Invalid Data", 400

all() 函数 returns True 如果迭代中的所有项的计算结果为真