Inicio > Cursos > Python > Proyecto: API REST con Python
PythonPython Avanzado y AplicacionesLección 21 de 24

Proyecto: API REST con Python

Flask es un microframework web para Python: minimalista, sin opiniones fuertes, perfecto para aprender cómo funciona el desarrollo web o para construir APIs REST pequeñas. Con apenas 10 líneas puedes tener un servidor corriendo que responde a peticiones HTTP con datos JSON.

En este proyecto final integrarás todo lo aprendido: clases para modelar los datos, diccionarios para el almacenamiento, manejo de errores para respuestas apropiadas, y módulos para organizar el código. El resultado será una API REST funcional que cualquier aplicación frontend puede consumir.

# pip install flask
from flask import Flask, jsonify, request
from datetime import datetime

app = Flask(__name__)

# Base de datos en memoria
tareas = []
contador = 1

def nueva_tarea(titulo, descripcion=""):
    global contador
    tarea = {
        "id": contador,
        "titulo": titulo,
        "descripcion": descripcion,
        "completada": False,
        "creada": datetime.now().isoformat()
    }
    contador += 1
    return tarea

@app.route("/tareas", methods=["GET"])
def listar_tareas():
    return jsonify(tareas)

@app.route("/tareas", methods=["POST"])
def crear_tarea():
    datos = request.get_json()
    if not datos or "titulo" not in datos:
        return jsonify({"error": "Título requerido"}), 400
    tarea = nueva_tarea(datos["titulo"], datos.get("descripcion", ""))
    tareas.append(tarea)
    return jsonify(tarea), 201

@app.route("/tareas/<int:id>", methods=["DELETE"])
def eliminar_tarea(id):
    global tareas
    tarea = next((t for t in tareas if t["id"] == id), None)
    if not tarea:
        return jsonify({"error": "No encontrada"}), 404
    tareas = [t for t in tareas if t["id"] != id]
    return jsonify({"mensaje": "Eliminada"})

if __name__ == "__main__":
    app.run(debug=True)
Consejo🌐 Flask es un micro-framework web. Con solo 20 líneas tienes una API funcional. Para producción considera FastAPI (más moderno y rápido).
← Metaclases y Gestión de MemoriaProyecto Final: Gestor de Tareas CLI →

Practica esta lección

Resuelve los ejercicios del curso de Python en la app, gratis y con corrección automática.

Empezar a practicar