[pyar] Problemas con Swagger usando Flask

Alejandro Marchan alemarchan en gmail.com
Mar Nov 20 17:06:55 -03 2018


Comunidad de Python, saludos para todos.

Les escribo para solicitar su ayuda ya que tengo un tema que me trae de
cabeza y no he podido resolverlo de ninguna forma.

Por primera vez estoy usando Python, lo vimos como el lenguaje más
apropiado y sencillo para resolver unos requerimientos que surgieron en
nuestro departamento y allí vamos dándole.

Hemos estado desarrollando unos microservicios web usando la librería Flask
para levantar el servicio y para también hacer la respectiva documentación
con Swagger. Nos han salido 3 microservicios, pero ahora tenemos un caso
que no lo he podido resolver, tampoco tengo idea de cómo solucionarlo ni he
tenido a quien recurrir ya que pocos conocen de Python en el trabajo y
menos sobre esa librería.

Ese servicio es invocado desde un HTLM.
En sí lo que hace eso es invocar al Microservicio de Python que al
invocarse llama a un Store Procedure de Oracle que devuelve un varchar con
formato JSON con algo así:

*{"list_pais": [
{"pais":"URUGUAY"},{"pais":"ARGENTINA"},{"pais":"PARAGUAY"},{"pais":"VENEZUELA"}]
}*

Y en la página HTML se ve como una lista. Hasta allí todo va bien.

Ahora cuando quiero documentar esa salida en el swagger, no se visualiza,
dice las especificaciones del servicio pero no el modelo de salida que
debería ser algo así (creo yo):

*{"list_pais":*
*  ["pais": string]*
*}*

Pero esa parte no encuentro como detallarla en el modelo. He colocado algo
así:

md_respuesta = api.model('getCountry', {
        'pais': fields.String(required=True, description='Agrupador de paises'),
        'list_pais': fields.String(required=True, description='Nombre del Pais')
})


Pero eso no es la realidad. He querido colocar "list_pais" como nested o
como list pero si pongo algo así, el swagger muere ya que me dice "No Api
specification". Hasta ahora no tenemos problemas porque el Microservicio
está trabajando, pero la gente de arquitectura nos anda pidiendo que
también funcione el Swagger y no hemos podido hacer nada.

En el siguiente link escribí en un foro donde coloqué otras pruebas que he
estado haciendo para probar otras formar y nada que me funciona:

https://stackoverflow.com/questions/53268702/python-swagger-trouble

Alguien ha trabajado con eso a ver si me puede echar una mano? Disculpen lo
extenso, pero no sé si con ello logro dar un buen detalle del problema que
no he podido resolver. Acá les adjunto el servicio que tenemos funcionando,
no es lo más óptimo ni bonito de seguro pero allí vamos!

 sources_predictivo_prod.zip
<https://drive.google.com/file/d/12imyTAD_xyx_MfpLaFu9BqMniqVs-kIR/view?usp=drive_web>


-- 
Atte.
Alejandro Marchán.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20181120/2559ea8d/attachment-0001.html>


Más información sobre la lista de distribución pyar