6.6 Diseña tus rutas CRUD con el patrón Route-Handler
Verás cómo se organizan las rutas para realizar acciones de Crear, Leer, Actualizar y Eliminar tareas, usando funciones específicas para cada acción. Simulando datos, almacenando en memoria.
Verás cómo se organizan las rutas para realizar acciones de Crear, Leer, Actualizar y Eliminar tareas, usando funciones específicas para cada acción. Simulando datos, almacenando en memoria.
En el desarrollo web, una ruta es una URL que el usuario visita, y un handler es la función que responde a esa solicitud.
El Patrón Route-Handler establece una relación clara:
Este enfoque permite organizar tu aplicación dividiendo cada acción (como crear, leer, actualizar o eliminar datos) en rutas bien definidas.
Así, cada acción de la app tiene una dirección clara (ruta) y una lógica específica (handler).
Para permitir que los usuarios agreguen tareas, necesitamos una ruta que reciba los datos desde un formulario o petición.
POST, que está diseñado para enviar información al servidor.@app.route('/tareas', methods=['POST'])def crear_tarea():# Suponiendo que recibimos un títulotitulo = request.form['titulo']tareas.append(titulo)return "Tarea creada"
Para mostrar las tareas guardadas en la aplicación, usamos una ruta con el método GET.
Este método se utiliza para obtener información del servidor, sin modificar nada.
Una forma común de hacerlo es responder en formato JSON, que es fácil de leer y usar en la interfaz del usuario.
Ejemplo:
from flask import jsonify@app.route('/tareas', methods=['GET'])def obtener_tareas():return jsonify(tareas)
Así, los usuarios pueden consultar las tareas existentes desde la interfaz o una API externa.
Cuando un usuario quiere modificar una tarea (por ejemplo, marcarla como completada o cambiar su texto), usamos el método PUT.
Ejemplo:
@app.route('/tareas/<int:id>', methods=['PUT'])def actualizar_tarea(id):nueva_info = request.jsontareas[id].update(nueva_info)return "Tarea actualizada"
Con esta lógica, cada tarea puede ser modificada desde la interfaz sin alterar el resto de la lista.
Cuando una tarea ya no es necesaria, puede eliminarse usando una ruta con el método DELETE.
Ejemplo
@app.route('/tareas/<int:id>', methods=['DELETE'])def eliminar_tarea(id):tareas.pop(id)return "Tarea eliminada"
Este patrón completa el ciclo CRUD: Crear, Leer, Actualizar y Eliminar tareas, cada una con su ruta y handler bien definidos.
Un buen diseño de rutas no solo define qué hacer cuando todo funciona, sino también cómo reaccionar cuando algo sale mal.
Es importante verificar que los datos recibidos sean válidos y manejar casos como:
@app.route('/tareas/<int:id>', methods=['GET'])def obtener_tarea(id):if id >= len(tareas):return "Tarea no encontrada", 404return jsonify(tareas[id])
El manejo de errores mejora la experiencia del usuario y evita que la app se caiga ante casos inesperados.
Ahora sabes cómo funciona el Patrón Route-Handler, organizando cada acción CRUD (Crear, Leer, Actualizar, Eliminar) como una ruta con su función asociada.
Es fundamental comprender la importancia de estructurar de manera clara y coherente las rutas y handlers para garantizar un funcionamiento eficiente de la aplicación.