我不知道这是否重要,但我实际上正在使用flask-restplus扩展。
我的所有其他烧瓶错误处理程序都按预期工作,但由于某种原因,在处理 a 时marshmallow ValidationError,响应只是我的原始请求正文,而不是棉花糖错误消息。我已经做了一些调试,我知道正在调用错误处理程序,并且 的属性ValidationError是可访问的(例如,已验证 is 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.']}
实际响应:
{"name": "Bob"}
我已经能够通过重写 的函数并引发自定义异常来解决这个问题marshmallow.Schema,handle_error但我仍然很好奇是什么导致了这种行为!
猛跑小猪
撒科打诨
相关分类