Blog
Flask para Api Rest 1º Ejemplo
- Publicado por: Rafael Fernandez
- Categoría: API RESTful Blog

Entender de forma simple como funciona un sistema REST en Flask.
Introducción
Vamos explicar cómo analizar y usar los datos json con diferentes métodos en Flask (un framework de micro servicios). En este curso nos vamos a centrar en la API REST con Flask.
Vamos a empezar creando “Hola mundo” en Flask y de paso verificamos que tenemos instalado correctamente Flask (sino lo tienes instalado abre un terminal y escribe el siguiente comando)
pip install flask
Aquí tenemos el “Hola Mundo”
from flask import Flask app = Flask(__name__) @app.route('/') def Hola(): return 'Hola Mundo!' if __name__ == "__main__": app.run(host='0.0.0.0', debug=True, port=8080)
Con este simple código acabamos de crear nuestro “Hola Mundo” en nuestro localhost y para verlo 1º ejecutamos el código. Al ejecutar el código en la consola de python (en mi caso, la consola de spyder ya que tengo anaconda) me parece los siguiente:
La imagen de arriba nos dice que ya funcionando nuestra aplicación. Para ver el resultado escribimos en el navegador -> localhost:8080/ y nos debería aparecer en cualquier navegador una imagen como la siguiente:
La idea de tener nuestra aplicación en REST es que no nos devuelva un “Hola Mundo” sino archivos json con los datos que necesitemos.
¿Qué es un JSON?
JSON es un formato de texto sencillo para el intercambio de datos. Se trata de un subconjunto de la notación literal de objetos de JavaScript, aunque, debido a su amplia adopción como alternativa a XML, se considera (año 2019) un formato independiente del lenguaje.
Una de las supuestas ventajas de JSON sobre XML como formato de intercambio de datos es que resulta mucho más sencillo escribir un analizador sintáctico (parser) para él.
Los archivos json son del tipo:
{ "nombre": "Jonny", "apellido": "Garcia", "vivo": si, "edad": 27, "direccion": { "calle": "21 2nd mesa", "ciudad": "New York", "estado": "NY", "codigo postal": "10021-3100" }, "numerosdetelofono": [ { "tipo": "casa", "numero": "212 555-1234" }, { "tipo": "oficina", "numero": "646 555-4567" }, ], "hijos": [] }
Son similares a los diccionarios de python.
Ejemplo API REST con Json
Aquí tenemos el ejemplo, en el decorador “@app.route” hemos añadido nuestra ruta de la api, la función la hemos llamado ejemplo2.
from flask import Flask from flask import jsonify app = Flask(__name__) @app.route('/api/ejemplo') def ejemplo2(): return jsonify(Hola = 'Mundo!') if __name__ == "__main__": app.run(host='0.0.0.0', debug=True, port=8080)
Comentando un poco el código, lo que hacemos es:
- Importar los objetos Flask y jsonify
- Creo el objeto app
- Configuramos el decorador con la ruta
- Creamos la funcion ejemplo2. Esta función lo único que hace es devolver el “Hola Mundo”
- Invocamos la función main (por defecto en python) donde le decimos nuestro host y puerto de nuestra app.
Si ejecutamos el código y vamos a nuestra ruta ahora vemos como vemos el “Hola Mundo” pero esta vez con archivo json:Ejemplo API REST, Métodos:
Para hacer gestiones con REST existen los siguientes métodos generales:
- GET: Para hacer consultas y obtener un recurso
- POST: Para crear un recurso
- PUT: Para modificar un recurso
- DELETE: Para eliminar un recurso
Nuestro siguiente ejemplo tiene una función, la función ejemplo3 tiene el método GET:
from flask import Flask from flask import jsonify app = Flask(__name__) @app.route('/api/ejemplo3', methods=['GET']) def ejemplo3(): return jsonify(Hola = 'Mundo!') if __name__ == "__main__": app.run(host='0.0.0.0', debug=True, port=8080)
Ahora vamos a usar Postman (herramienta que nos permite hacer request mediante el protocolo HTTP de forma sencilla). Puedes instalar postman desde la siguiente url: getpostman.com
Una vez instalado vamos hacer un GET. Antes de esto corre el código y con la herramienta postman:
- selecciona GET
- en la url escribe nuestra direccion 127.0.0.1:8080/api/ejemplo3
- en Body haz click en raw
- por último haz click en send.
Si todo esta correctamente configurado puedes ver como aparece en el punto 5 de la imagen nuestro “Hola Mundo” en formato json.
Ahora vamos a pasar a explicar con otro ejemplo el método POST.
En el siguiente ejemplo hemos añadido varios métodos y hemos hecho un if para hacer una cosa determinada u otra dependiendo del método que se use. Si se utilza el método POST dentro tenemos otro if para reconocer el nombre y apellido. También manejamos errores si no enviamos la información correctamente en el archivo json, si ocurre esto nos devuelve “json no es correcto'”
from flask import Flask from flask import jsonify from flask import request app = Flask(__name__) @app.route('/api/ejemplo5', methods=['GET', 'POST', 'DELETE', 'PUT']) def ejemplo5(): if request.method == 'POST': content = request.get_json(force=True) print(content) if 'nombre' in content.keys(): nombre =content['nombre'] else: return jsonify(error='json no es correcto') if 'apellido' in content.keys(): apellido =content['apellido'] else: return jsonify(error='json no es correcto') return jsonify('Quien eres? Soy ' + nombre + apellido) elif request.method == 'GET': return jsonify('soy un get') if __name__ == "__main__": app.run(host='0.0.0.0', debug=True, port=8089)
Usando postman podemos ver el resultado en la siguiente imagen con el método POST:
En el caso que cambiemos el POST por un GET deberíamos ver como resultado “Soy un get” y si no introducimos el json correctamente en la siguiente imagen podemos ver que ocurre:
➡ Ahora es tu turno, te recomendamos que hagas pruebas y juegues con los diferentes métodos para que puedas entender el funcionamiento de este 1º ejemplo de API REST con Flask. Inicia con nuestro curso creación de APIs RESTful con Flask – Python y aprende mucho mas: