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).
Practica esta lección
Resuelve los ejercicios del curso de Python en la app, gratis y con corrección automática.
Empezar a practicar