Документация по Swagger API и flask-restplus: как представить объект с ключом в теле запроса - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть этот пример параметра, необходимого в теле запроса PUT к моему API:

{
  "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" }
}

Как я могу это сделать в документации к флеш-restplus swagger?Я попробовал с моделью ребенка и родителя и ожидаю безуспешно

Спасибо, DT

1 Ответ

0 голосов
/ 23 ноября 2018

Вам нужно использовать поля. Вложено, чтобы использовать модель для ввода другой модели.Проверьте код ниже:

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):
...