【问题标题】:Swagger API documentation and flask-restplus: How to represent an object with a key in the body of a requestSwagger API 文档和 flask-restplus:如何在请求正文中用键表示对象
【发布时间】:2018-11-20 19:03:00
【问题描述】:

我的 API 的 PUT 请求正文中需要此参数示例:

{
  "id": "string",
  "closed_date": "2018-11-20T18:42:58.946Z",
  "contact": "string",
  "description": "string",
  "status": "Open"
}

为了让它在我的 Swagger 端点文档中得到体现,我这样做了:

@api.doc(body=card_change_fields)
    def put(self, card_id, *args, **kwargs):

地点:

card_change_fields = api.model('card modification', {

        'id': fields.String(description='id', required=True),
        'closed_date': fields.DateTime(description='Closed date'),
        'contact': fields.String(description='Contact'),
        'description': fields.String(description='Description'),
        'status': fields.String(description='Status', required=True,
                                enum=["Open", "Closed"])
})

然而我想要的实际上是这样的:

{  card : {
  "id": "string",
  "closed_date": "2018-11-20T18:42:58.946Z",
  "contact": "string",
  "description": "string",
  "status": "Open" }
}

如何在我的 flask-restplus swagger 文档中做到这一点? 我尝试使用子模型和父模型并期望没有成功

谢谢, DT

【问题讨论】:

    标签: python-3.x api flask swagger flask-restplus


    【解决方案1】:

    您需要使用 fields.Nested 来使用一个模型作为另一个模型的输入。检查下面的代码:

    card_change_fields = api.model('card modification', {
                    'id': fields.String(description='id', required=True),
                    'closed_date': fields.DateTime(description='Closed date'),
                    'contact': fields.String(description='Contact'),
                    'description': fields.String(description='Description'),
                    'status': fields.String(description='Status', required=True,
                                            enum=["Open", "Closed"])
    })
    
    card = api.model('Card', {
        'card': fields.Nested(card_change_fields, required=True)
    })
    

    您的文档渲染也将分别更改为:

    @api.doc(body=card)
        def put(self, card_id, *args, **kwargs):
    

    【讨论】:

    • 是的,您的回答是正确的。它完全符合我的预期。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-16
    • 2019-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    相关资源
    最近更新 更多