gpt4 book ai didi

python - Flask-Restplus:如何建模字符串或对象?

转载 作者:行者123 更新时间:2023-11-30 22:17:00 28 4
gpt4 key购买 nike

在 Flask-Restplus 中,我需要对一个属性值建模,该属性值可能是字符串列表或对象列表。

它可以是这样的:

{
'my_attribute': [
'value1',
'value2'
]
}

或者它可以如下所示:

{
'my_attribute': [
{
'name': 'value1',
'foo': 'something'
},
{
'name': 'value2',
'foo': 'something else'
}
]
}

我应该如何在 Flask-Restplus 中建模'api.model

最佳答案

我自己刚刚弄清楚了这一点。简而言之,创建一个发出自己的 JSON 架构的自定义字段类。该架构又使用 oneOf类型来指定这是一个字符串或一个对象。

from flask_restplus import fields

element_object = api.model('Element_Object', {
'name': fields.String(),
'foo': fields.String()
})

class StringOrObjectElement(fields.Nested):
__schema_type__ = ['string','object']

def output(self, key, obj):
if isinstance(obj, str):
if key == 'name':
return obj
else:
return 'default_value'
return super().output(key, obj)

def schema(self):
schema_dict = super().schema()
schema_dict.pop('type')
nested_ref = schema_dict.pop('$ref')
schema_dict['oneOf'] = [
{
'type': 'string'
},
{
'$ref': nested_ref
}
]
return schema_dict

root_object = api.model('Root_Object', {
'my_attribute': fields.List(fields.StringOrObjectElement(element_object))

关于python - Flask-Restplus:如何建模字符串或对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49793006/

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