Desarrollo de una API con Flask en Python: Tutorial completo

Desarrollo de una API con Flask en Python: Tutorial completo

Introducción

En este tutorial, aprenderás a desarrollar una API REST con Flask, un microframework de Python para crear aplicaciones web. Una API REST es una interfaz que permite a los usuarios interactuar con un servicio web a través de solicitudes HTTP.

Requisitos

Para seguir este tutorial, necesitarás lo siguiente:

  • Un editor de texto o IDE
  • Python 3
  • La biblioteca Flask
  • Una base de datos (opcional)

Creación del proyecto

Para empezar, crea un nuevo directorio para tu proyecto y accede a él:

mkdir api-flask
cd api-flask

Ahora, crea un archivo llamado app.py y agrega el siguiente código:

Python
from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
    return "Hola, mundo!"

if __name__ == "__main__":
    app.run()

Este código crea una aplicación Flask básica con una ruta que responde con el mensaje «Hola, mundo!».

Creación de una base de datos

Para almacenar datos en nuestra API, podemos usar una base de datos. En este tutorial, usaremos la base de datos SQLite.

Para crear una base de datos SQLite, ejecuta el siguiente comando:

sqlite3 db.sqlite3

Ahora, crea una tabla llamada users con los siguientes campos:

SQL
CREATE TABLE users (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name VARCHAR(255),
    email VARCHAR(255),
    password VARCHAR(255)
);

Conexión a la base de datos

Para conectarnos a la base de datos, usaremos la biblioteca SQLAlchemy.

Importa la biblioteca SQLAlchemy:

Python
from sqlalchemy import create_engine

Crea una instancia de la clase create_engine() para conectarte a la base de datos SQLite:

Python
engine = create_engine("sqlite:///db.sqlite3")

Creación de modelos

Un modelo es una representación de una tabla de base de datos en Python.

Importa la clase Model de SQLAlchemy:

Python
from sqlalchemy.ext.declarative import declarative_base

Crea una clase base para tus modelos:

Python
Base = declarative_base()

Crea una clase modelo para la tabla users:

Python
class User(Base):
    __tablename__ = "users"

    id = Column(Integer, primary_key=True)
    name = Column(String(255))
    email = Column(String(255))
    password = Column(String(255))

    def __repr__(self):
        return f"<User(id={self.id}, name={self.name}, email={self.email}, password={self.password})>"

Creación de rutas

Una ruta es un punto de entrada a una API REST.

Para crear una ruta, usa la función route() de Flask.

La siguiente ruta responde con una lista de todos los usuarios:

Python
@app.route("/users")
def get_users():
    users = User.query.all()
    return jsonify([user.to_dict() for user in users])

La siguiente ruta crea un nuevo usuario:

Python
@app.route("/users", methods=["POST"])
def create_user():
    data = request.get_json()
    user = User(name=data["name"], email=data["email"], password=data["password"])
    db.session.add(user)
    db.session.commit()
    return jsonify(user.to_dict())

Ejecución de la aplicación

Para ejecutar la aplicación, ejecuta el siguiente comando:

flask run

La aplicación se ejecutará en el puerto 5000.

Pruebas de la API

Para probar la API, puedes usar un cliente HTTP como Postman o Insomnia.

Conclusión

En este tutorial, aprendiste a desarrollar una API REST con Flask. Puedes usar este tutorial como punto de