我有一个 Flask Rest Api,它使用棉花糖进行序列化-去现实化。Api 收到一批项目。
我想对每个项目的输入架构执行严格验证,而不是对整个请求进行验证。 这样做的目的是允许我进行细粒度的错误处理,即处理整个批处理请求并返回错误项目的验证错误。
示例时间!
假设这是我的主要 Rest Json 请求模式(注意Nested
字段列表) -
from marshmallow import Schema
class MyRequestSchema(Schema):
class Meta:
strict = True
items = fields.List(fields.Nested(MyItemSchema), required=True)
id = fields.String(required=False, missing=None)
meta_field = fields.Integer(required=False, missing=False)
这是我的Nested field
架构-
class MyItemSchema(Schema):
class Meta:
strict = True
name = fields.String(required=False, missing=None)
flag = fields.Bool(required=False, missing=False)
我想要棉花糖 1) 反序列化整个请求模式和 2) 为我提供每项模式验证错误或序列化对象。使用这种行为,我将处理每个Item
. 对于每个包含验证错误的项目,我将返回一个错误对象,对于有效的项目,我将返回一个正确的响应项目。
所以对于这样的请求 -
{
"id": "d6f6f80c558a11",
"meta_field": 42,
"items": [
{
"name": "abc",
"flag": true
},
{
"bad_field": "bad_value"
}
]
}
我想按照以下方式回复 -
{
"id": "d6f6f80c558a11",
"result_items": [
{
"name": "abc",
"result": "Great Success!"
},
{
"schema_validation_error": {
"details": {
"listings": {
"0": {
"name": [
"Missing data for required field."
],
"flag": [
"Missing data for required field."
]
}
}
},
"message": "Invalid Item"
}
}
]
}
棉花糖是否支持这种行为?
关于实施这个有什么建议吗?
理想情况下,我想要一个包含尽可能多的 Flask+Marshmallow 的答案(而不是自己实现逻辑)
谢谢!