gpt4 book ai didi

python - flask 错误处理程序未正确处理棉花糖验证错误

转载 作者:行者123 更新时间:2023-12-04 03:50:00 33 4
gpt4 key购买 nike

我不知道这是否重要,但我实际上在使用 flask-restplus延期。
我所有的其他 flask 错误处理程序都按预期工作,但出于某种原因在处理 marshmallowValidationError ,响应只是我的原始请求正文,而不是棉花糖错误消息。我已经进行了一些调试,我知道正在调用错误处理程序,以及 ValidationError 的属性。是可访问的(例如验证 error.messages{'age': ['Missing data for required field.']} )。
有谁之前经历过这个吗?感谢您的阅读,并提前感谢您的帮助!
有效载荷:

{"name": "Bob"}
错误处理程序:
from marshmallow.exceptions import ValidationError

@api.errorhandler(ValidationError)
def marshmallow_error_handler(error):
# print(error.messages) results in expected {'age': ['Missing data for required field.']}
return error.messages, 400
架构:
class SimpleSchema(Schema):
name = fields.String(required=True)
age = fields.String(required=True)
测试处理程序的简单路线:
@api.route("/test")
class MarshmallowTest(Resource):
def post(self):
SimpleSchema().load(api.payload)
预期回应:
{'age': ['Missing data for required field.']}
实际 react :
{"name": "Bob"}
我已经能够通过覆盖 marshmallow.Schema 来解决这个问题的 handle_error函数并引发自定义异常,但我仍然很好奇是什么导致了这种行为!

最佳答案

我也遇到了这个错误并发现了这个 Github 问题 https://github.com/noirbizarre/flask-restplus/issues/530
我采用的解决方法是覆盖 data我自己的处理程序中异常的属性

    @api.errorhandler(Exception)
def handle_unexpected_within_restx(e):
app.logger.exception(e)

data = compose_error_response(e.messages)
# https://github.com/noirbizarre/flask-restplus/issues/530
e.data = data
return data, 400

关于python - flask 错误处理程序未正确处理棉花糖验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64547868/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com