Programación sobre Redes — PFO2

API REST con Flask & SQLite

Servidor con registro de usuarios, inicio de sesión con contraseñas hasheadas y gestión de tareas. Cliente de consola incluido.

Ver Código Fuente Cómo Ejecutar

Tecnologías

Stack del Proyecto

🐍

Python 3

Lenguaje principal para el servidor y el cliente de consola.

🌶️

Flask

Framework web ligero para construir la API REST con endpoints JSON y HTML.

🗄️

SQLite

Base de datos embebida para persistir usuarios. Sin configuración externa.

🔒

Werkzeug

Hashing de contraseñas con scrypt + salt aleatorio. Nunca texto plano.

API

Endpoints Disponibles

Método Ruta Descripción Auth
POST /registro Registra un nuevo usuario con contraseña hasheada No
POST /login Verifica credenciales del usuario No
GET /tareas Muestra página HTML de bienvenida Basic Auth

Ejemplo — Registrar usuario

curl -X POST http://localhost:5000/registro \
  -H "Content-Type: application/json" \
  -d '{"usuario": "manu4", "contraseña": "1234"}'

Ejemplo — Iniciar sesión

curl -X POST http://localhost:5000/login \
  -H "Content-Type: application/json" \
  -d '{"usuario": "manu4", "contraseña": "1234"}'

Ejemplo — Ver tareas (con auth)

curl -u manu4:1234 http://localhost:5000/tareas

Guía

Instalación y Ejecución

1. Clonar el repositorio

git clone https://github.com/jmgasbarro/Redes-PFO2.git
cd Redes-PFO2

2. Instalar dependencias

pip install -r requirements.txt

3. Iniciar el servidor (Terminal 1)

python servidor.py

El servidor se ejecuta en localhost:5000

4. Ejecutar el cliente (Terminal 2)

python cliente.py

Se abrirá un menú interactivo con opciones para registrarse, loguearse y ver tareas.

Demostración

Pruebas con el Cliente de Consola

Iniciar el servidor

Al ejecutar servidor.py, se muestra el mensaje de inicio:

Iniciar servidor

Menú del cliente

Al ejecutar cliente.py, se presenta un menú interactivo:

Menú del cliente
1️⃣

Registrar usuario

Registra un nuevo usuario proporcionando nombre y contraseña.

Crear usuario
2️⃣

Iniciar sesión

Verifica credenciales enviando un POST a /login.

Iniciar sesión
3️⃣

Ver tareas

Accede a /tareas usando HTTP Basic Auth y muestra el HTML.

Ver tareas

🎉 Página de bienvenida

Al elegir la opción 3, se accede a la página HTML con el cartel de BIENVENIDO y las tareas cargadas.

Cartel de bienvenida
4️⃣

Salir del programa

La opción 4 cierra el cliente.

Salir del programa

Teoría

Respuestas Conceptuales

🔐 ¿Por qué hashear contraseñas?

🗄️ Ventajas de usar SQLite en este proyecto

Estructura

Arquitectura del Proyecto

Redes-PFO2/ ├── servidor.py # API Flask (servidor) ├── cliente.py # Cliente de consola ├── requirements.txt # Dependencias ├── templates/ │ └── tareas.html # Página HTML de bienvenida ├── usuarios.db # Base de datos (se genera al ejecutar) ├── index.html # Documentación (GitHub Pages) └── README.md