Cómo Crear una API REST con Flask y Python

¿Qué es una API REST?

Una API REST (Representational State Transfer) es un conjunto de convenciones para construir servicios web que se comunican mediante HTTP. Flask es uno de los frameworks más populares para crearlas en Python.

Configuración Inicial

pip install flask flask-sqlalchemy flask-cors

Creando la API

from flask import Flask, jsonify, request
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///tareas.db"
db = SQLAlchemy(app)

class Tarea(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    titulo = db.Column(db.String(200), nullable=False)
    completada = db.Column(db.Boolean, default=False)

with app.app_context():
    db.create_all()

# GET - Obtener todas las tareas
@app.route("/api/tareas", methods=["GET"])
def obtener_tareas():
    tareas = Tarea.query.all()
    return jsonify([{
        "id": t.id,
        "titulo": t.titulo,
        "completada": t.completada
    } for t in tareas])

# POST - Crear nueva tarea
@app.route("/api/tareas", methods=["POST"])
def crear_tarea():
    data = request.get_json()
    nueva = Tarea(titulo=data["titulo"])
    db.session.add(nueva)
    db.session.commit()
    return jsonify({"mensaje": "Tarea creada", "id": nueva.id}), 201

# PUT - Actualizar tarea
@app.route("/api/tareas/", methods=["PUT"])
def actualizar_tarea(id):
    tarea = Tarea.query.get_or_404(id)
    data = request.get_json()
    tarea.titulo = data.get("titulo", tarea.titulo)
    tarea.completada = data.get("completada", tarea.completada)
    db.session.commit()
    return jsonify({"mensaje": "Tarea actualizada"})

# DELETE - Eliminar tarea
@app.route("/api/tareas/", methods=["DELETE"])
def eliminar_tarea(id):
    tarea = Tarea.query.get_or_404(id)
    db.session.delete(tarea)
    db.session.commit()
    return jsonify({"mensaje": "Tarea eliminada"})

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

Buenas Prácticas

Conclusión

Flask te permite crear APIs REST de forma rápida y elegante. Con estos fundamentos puedes construir servicios web robustos y escalables.

🤖 Asistente Virtual
¡Hola! 👋

¿En qué te puedo ayudar hoy?