Programación sobre Redes - 3°B

PFO2 - Sistema de Gestión de Tareas con API y Base de Datos

Estudiante: Federico Holc

Repositorio: https://github.com/fedeholc/redes-pfo2

Documentación en GitHub Pages: https://fedeholc.github.io/redes-pfo2/

Requisitos previos

  • Python 3.8 o superior
  • pip (gestor de paquetes de Python)

Instalación

  1. Clonar el repositorio:
git clone https://github.com/fedeholc/redes-pfo2.git
cd redes-pfo2
  1. Crear y activar un entorno virtual (recomendado):
python -m venv .venv
source .venv/bin/activate  # En Windows: .venv\Scripts\activate
  1. Instalar dependencias:
pip install -r requirements.txt

Ejecución

Iniciar el servidor

python servidor.py

El servidor estará disponible en: http://localhost:5000

Usar el cliente de consola

En otra terminal:

python cliente.py

API Endpoints

Autenticación

Registrar Usuario

  • URL: POST /registro
  • Body:
{
  "usuario": "mi_usuario",
  "contraseña": "mi_contraseña"
}
  • Respuesta exitosa (201):
{
  "mensaje": "Usuario registrado exitosamente",
  "usuario_id": 1,
  "usuario": "mi_usuario"
}

Iniciar Sesión

  • URL: POST /login
  • Body:
{
  "usuario": "mi_usuario",
  "contraseña": "mi_contraseña"
}
  • Respuesta exitosa (200):
{
  "mensaje": "Inicio de sesión exitoso",
  "usuario": "mi_usuario",
  "usuario_id": 1
}

Cerrar Sesión

  • URL: POST /logout
  • Respuesta exitosa (200):
{
  "mensaje": "Sesión cerrada exitosamente"
}

Gestión de Tareas

Nota: Todos los endpoints de tareas requieren autenticación previa.

Obtener Todas las Tareas

  • URL: GET /api/tareas
  • Respuesta exitosa (200):
{
  "tareas": [
    {
      "id": 1,
      "titulo": "Mi primera tarea",
      "descripcion": "Descripción de la tarea",
      "completada": false,
      "fecha_creacion": "2025-06-19 10:30:00"
    }
  ],
  "total": 1
}

Crear Nueva Tarea

  • URL: POST /api/tareas
  • Body:
{
  "titulo": "Nueva tarea",
  "descripcion": "Descripción opcional"
}
  • Respuesta exitosa (201):
{
  "mensaje": "Tarea creada exitosamente",
  "tarea_id": 2,
  "titulo": "Nueva tarea",
  "descripcion": "Descripción opcional"
}

Actualizar Tarea

  • URL: PUT /api/tareas/<id>
  • Body (campos opcionales):
{
  "titulo": "Título actualizado",
  "descripcion": "Nueva descripción",
  "completada": true
}
  • Respuesta exitosa (200):
{
  "mensaje": "Tarea actualizada exitosamente"
}

Eliminar Tarea

  • URL: DELETE /api/tareas/<id>
  • Respuesta exitosa (200):
{
  "mensaje": "Tarea eliminada exitosamente"
}

Páginas Web

Página de Inicio

  • URL: GET /
  • Muestra la página principal con información sobre la API

Página de Tareas

  • URL: GET /tareas
  • Página de bienvenida para usuarios autenticados
  • Requiere: Sesión activa

Tests

# Ejecutar todas las pruebas con curl y generar documentación
./test_curl.sh

# Suite completa de pruebas automatizadas
python test_completo.py

# Ver resultados detallados (dado que se pueden ejecutar los tests y ver los resultados consideré que no era necesario adjuntar capturas de pantalla de los mismos)

ls api-tests/