Flask -стремительно, используя вложенные поля для создания документов с вложенным ответом, получая TypeError: Объект типа Nested не JSON serializable - PullRequest
0 голосов
/ 02 апреля 2020

Я использую flask -restx / flask -restplus, пытаясь использовать функцию генерации документации swagger. У меня есть эта настройка для моих моделей.

A = api.model(
    'A', {
        "a1": fields.String(description=''),
        "a2": fields.String(description='')
    }
)

B = api.model(
    'B', {
        "b1": fields.String(description=''),
        "b2": fields.String(description='')
    },
)

response_with_nested_data = api.model(
    "TLD", {
        "A": fields.Nested(
            A, description=''
            ),
        "B": fields.Nested(
            B, description=''
        )
    }
)

И у меня есть обработчик, который выглядит как

@myapi.route('/aa', methods=['POST'])
class AA(Resource):
    @myapi.expect(simple_expected_model)
    @myapi.response(200, response_with_nested_data)
    @do_auth(require_token=True, render_errors=True)
    def post(self):
        return handle_request(request)

Я пытаюсь получить вывод из этой конечной точки API, в документах Swagger, это выглядит как

{
    "A": {
        "a1": "a",
        "a2": "aa"
    }
    "B": {
        "b1": "b",
        "b2": "bb"
    }
}

, но когда раскручиваю мой сервер и нажимаю на мою страницу генерации чванских документов, я получаю сообщение об ошибке

TypeError: Object of type Nested is not JSON serializable

Так что я знаю, что здесь что-то не так. Любые идеи, где я иду не так и что я должен делать вместо этого?

1 Ответ

0 голосов
/ 03 апреля 2020

Я решил проблему с помощью ключевых слов в декораторе.

 @myapi.response(200, response_with_nested_data)

стал

@myapi.response(code=200, model=response_with_nested_data, description='')
...