Документация Swagger для ответа API с помощью flask-restx

#flask #swagger #flask-restplus #flask-restx

Вопрос:

Я читаю документацию по документации swagger с помощью flask-restx и следую примерам. Я понимаю, что для создания документов swagger для параметров, которые принимает API, я должен сделать

 @api.doc(params={'id': 'An ID'})
 

Однако я не могу найти объяснения того, как документировать тело ответа API. Не код ответа, а результат, возвращаемый, например, методом get. То, что я ищу, — это что-то вроде приведенного ниже:

 class MyResource(Resource):
    @api.doc(returns={"info": "Some very interesting information"})
    def get(self, id):
        res = some_function_of_id(id)
        return {"info": res}
 

Кто-нибудь знает, возможно ли это, и если да, то как?

Ответ №1:

Попробуйте декоратор api.response

 model = api.model('Model', {
    'name': fields.String,
})
@api.route('/my-resource/')
class MyResource(Resource):
    @api.response(200, 'Success', model)
    @api.response(400, 'Validation Error')
    def get(self):
        pass
 

Обратите внимание, что декоратор @api.marshal_with() автоматически документирует ответ..

https://flask-restx.readthedocs.io/en/latest/swagger.html#documenting-with-the-api-response-decorator

Комментарии:

1. Это документирует коды ответов, а не результат, возвращаемый API при успешном вызове.

2. Нет, он также документирует результат ответа. Я передаю модель в качестве 3-го параметра, если вы передадите модель, она должна быть задокументирована

3. вот фотография, на которой я пытаюсь сделать это с кодом ответа 400: imgur.com/AlsSlgl