具有列表字段的FlaskRestfulSwagger模型类

2024-10-01 15:46:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在使用Flask-Restful-Swagger为一个API构建文档。我的一个资源返回一个包含一个元素的dict:数组。数组中的项的形式为

{
  "active": bool,
  "affectation": str,
  "alert_type": str, ...
} 

等等。字段是bool、str、int或float。数组的每个元素中总共有32个字段。我正在尝试构建@swagger.model类以用作responseClass。在

首先我试过:

^{pr2}$

在Swagger的HTML视图上产生了预期的输出:

{
  "items": [
    ""
  ]
}

所以我试着在它的基础上,展示实际的反应。比如:

{
  "items": [
    {
       "active": fields.Boolean,
       "affectation": fields.String,
       "alert_type": fields.String, ...
    }
  ]
}

我的第二个尝试是创建一个包含所有字段的字典,然后使用字段。嵌套比如:

resource_fields = {
    'items': fields.List(fields.Nested(report_fields))
}

但是HTML中的输出是

{
    "items": [
        null
    ]
}

然后我试图创建继承自fields.Raw的自己的字段,但是它给了我在HTML上相同的nulldict。为字段分配默认值也不起作用。在


Tags: restful元素flaskfieldsstringhtmltypeswagger
1条回答
网友
1楼 · 发布于 2024-10-01 15:46:59

我想出来了!在

主修课就这样结束了:

@swagger.model
@swagger.nested(
    items=Report.__name__)
class ReportListGet:
    resource_fields = {
        'items': fields.List(fields.Nested(Report.resource_fields))
    }

另一个类只是一个常规的@swagger.model

^{pr2}$

Restful-Flask-Swagger's GitHub page的例子中找到了我需要的线索。有用的代码从第157行开始。在

现在,Swagger的HTML视图显示如下:

{
  "items": [
    {
      "active": "",
      "affectation": "",
      "alert_type": "",
      ...
    }
  ]
}

相关问题 更多 >

    热门问题