带有嵌套字段的烧瓶 restex @expect

问题描述

我正在使用嵌套字段来验证传入的 post 请求,使用 @api.expect 之类的

payload1 = api.model('Payload',{
'prop1': fields.nested({'prop1_inner' : fields.String(required=True)})
})

payload2 = api.model('Payload',{
'prop1': fields.nested(api.model("Metadata",{
'prop1_inner': fields.String(required=True)
}))
})
  
 #doesn't work
 @api.expect(payload1,validate=True)
 def post(self):
 #works
 @api.expect(payload2,validate=True)
 def post(self):

当我使用 payload1 时出现异常

'dict' 对象没有属性 'name'

我希望两种表单都能验证传入的请求。想知道没有模型包装器的嵌套字段不起作用的原因。

解决方法

考虑一下。 嵌套模型通常不在内部定义。它们本身必须是具有离散名称的离散模型,由于 swagger 文档将嵌套字段作为单独的模型,因此,在这里,

payload1_addon = api.Model('PayloadAddon',{
                                'prop1_inner' :fields.String(required=True)})

payload1 = api.model('Payload',{'prop1': fields.Nested(payload1_addon)})