Crear datos JSON a partir de un diccionario en Flask (parte 1) (actualización- Docker)
Posted on dom 25 septiembre 2016 in Tutorial Python • 2 min read
El artículo original lo pueden revisar acá.
El repositorio donde se encuentra el código en gitlab en la rama json1.
Los artículos sobre Flask lo pueden revisar en el enlace de artículos sobre flask.
Archivo Dockerfile
Se tiene el archivo Dockerfile a continuación:
FROM python
WORKDIR /code
RUN pip3 install --upgrade pip
RUN pip3 install flask
EXPOSE 5000
ADD . /code
CMD python app.py
El único cambio con respecto a la serie de tutoriales de Flask es que corre app.py
en vez de run.py
, se eliminaron varias dependencias de paquetes para simplificar la aplicación.
Archivo docker-compose.yml
El archivo docker-compose.yml
se le cambia el nombre a la imagen, a continuación el código del archivo:
tutorial-json1:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
Archivo app.py
El archivo app.py
el único cambio con respecto al artículo anterior es que levanta el run en modo debug y se le dice la ip 0.0.0.0 a fin de que funcione desde el contenedor, el código a continuación:
#!/usr/bin/env python
#Se importa de flask a Flask, jsonify y json
from flask import Flask,jsonify,json
#Se crea la instancia de la aplicacion
app = Flask(__name__)
#Se tiene una lista de nombres
lista = ["John Doe","Jane Doe"]
#Se crea
#Se define el decorador route donde se da la ruta del servidor web.
@app.route("/ListaEmpleados")
def ListaEmpleados():
try:
#inicializar la lista de empleados
listaEmpleados = []
#crear instancias para llenar la lista
for i in lista:
datos = i.split(" ")
listaEmpleados.append({'nombre': datos[0],'apellido': datos[1]})
# convertir en dato json al diccionario
jsonStr = json.dumps(listaEmpleados)
except (Exception ,e):
print (str(e))
#Retorna el json
return jsonify(Empleados=jsonStr)
if __name__ == '__main__':
app.run(host="0.0.0.0",debug=True)
Ejecución
Ahora se construye la imagen y se ejecuta el contenedor Docker:
docker-compose build
docker-compose up
Al abri el navegador en la dirección http://localhost:5000/ListaEmpleados se tiene la imagen a continuación:
La imagen muestra el json en el navegador.
La salida de la ejecución del contenedor es la siguiente:
Creating tutorialflask_tutorial-json1_1
Attaching to tutorialflask_tutorial-json1_1
tutorial-json1_1 | * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
tutorial-json1_1 | * Restarting with stat
tutorial-json1_1 | * Debugger is active!
tutorial-json1_1 | * Debugger pin code: 733-227-386
tutorial-json1_1 | 172.17.0.1 - - [25/Sep/2016 18:44:22] "GET /ListaEmpleados HTTP/1.1" 200 -
En próximo artículo se trabajará más con el json, como se menciona en el artículo original.
¡Haz tu donativo! Si te gustó el artículo puedes realizar un donativo con Bitcoin (BTC) usando la billetera digital de tu preferencia a la siguiente dirección: 17MtNybhdkA9GV3UNS6BTwPcuhjXoPrSzV
O Escaneando el código QR desde la billetera: