即使验证失败,Marshmallow序列化错误也是空的

问题描述 投票:1回答:1

我正在将marshmallow添加到我的Python Web服务中,主要是因为我可以使用模式生成OpenAPI文档,但我也喜欢对API响应序列化进行错误检查。我已阅读相关文档,但我不明白为什么在序列化不完整的对象时我没有看到错误。

例如,使用以下架构:

class UserResponse(Schema):
    user = fields.Integer(required=True)
    email = fields.Email(required=True)
    name = fields.String(required=True)
    role = fields.String(required=True)

    class Meta:
        strict = True

schema = UserResponse()

验证按预期工作:

>>> schema.validate({'user': 1})
ValidationError: {'email': ['Missing data for required field.'], 'role': ['Missing data for required field.'], 'name': ['Missing data for required field.']}

但序列化返回一个空的错误列表:

>>> schema.dump({'user':1})
MarshalResult(data={'user': 1}, errors={})

这是它应该如何工作?如果序列化对象缺少必填字段,我预计会返回错误。

python marshmallow
1个回答
0
投票

通过设计,在棉花糖中,验证仅在反序列化时进行。

this issue

© www.soinside.com 2019 - 2024. All rights reserved.