Estoy tratando de crear servicios web tranquilos con matraz-restx y malvavisco.
Estoy usando malvavisco para las validaciones de solicitud y respuesta.
Dado que la documentación de la API de Flas-restx no es compatible con los esquemas de malvavisco en la interfaz de usuario de Swagger, quiero agregarla mediante el decorador de documentos.
Código del controlador:
@ns.route('/') class Test(Resource): @ns.doc(params={'test': 'test'}) def get(self): _input_schema = MySchema() errors = _input_schema.validate(request.args) if errors: return Response(str(errors), status=400) other_things()Código de esquema:
class MySchema(Schema): title = fields.Str() id = fields.Integer() slug = fields.Str()Estoy tratando de agregar automáticamente parámetros del esquema a documentos api como ese
@ns.doc(params=MySchema.ReturnAFieldDict())Y dará algo así
@ns.doc(params={"title":"A string", "id": "Int value with min and max", "slug":"A str"})¿Hay alguna forma de hacer eso?
Una forma que encontré para obtener documentación es usar el decorador @api.expect(schema).
Puede usar api.marshal_with para documentar las respuestas
from flask_restx.fields import Integer, String test_get = api.model( "TestGet", { "name": String(required=True), "age": Integer(required=True), }, ) @api.marshal_with(schema.test_get, code=200) def get(self): return {"name": "test", "age": 123}marshal_with asigna el diccionario u objeto devuelto y asigna el campo según el esquema. Aquí, en este caso, el diccionario devuelto se asignará al esquema test_get donde el nombre será "prueba" y la edad será 123.