Este proyecto implementa una API REST en Python utilizando Flask, SQLAlchemy para la gestión de la base de datos SQL Server, y JWT para la autenticación de usuarios. La API permite registrar usuarios, iniciar sesión, crear tareas y listar tareas asociadas a cada usuario.
-
Registro de Usuario (register):
- Endpoint
/register
para registrar nuevos usuarios en la base de datos. - Campos requeridos:
usuario
ycontraseña
. - Validación de usuario único antes de registrar.
- Endpoint
-
Inicio de Sesión (login):
- Endpoint
/login
para autenticar usuarios y generar un token JWT. - Campos requeridos:
usuario
ycontraseña
. - Verificación de credenciales de usuario.
- Endpoint
-
Creación de Tareas (tasks):
- Endpoint
/tasks
para crear nuevas tareas asociadas al usuario autenticado. - Campos requeridos:
titulo
de la tarea. - Registro de
descripcion
,fecha_creacion
automáticamente.
- Endpoint
-
Listado de Tareas (tasks):
- Endpoint
/tasks
para obtener todas las tareas del usuario autenticado. - Devolución de lista de tareas con campos:
id_tarea
,titulo
,descripcion
,fecha_creacion
.
- Endpoint
-
Base de Datos:
- Utilización de SQL Server con las tablas en esquemas
usuario
ytareas
. - Conexión configurada en
config.py
utilizando SQLAlchemy.
- Utilización de SQL Server con las tablas en esquemas
-
Seguridad:
- Uso de JWT para autenticación y autorización de usuarios.
- Generación de tokens JWT al autenticar usuarios en
/login
. - Protección de endpoints utilizando
jwt_required()
.
El proyecto está organizado de la siguiente manera:
project/
│
├── app.py
├── config.py
├── models.py
├── services.py
├── requirements.txt
├── .env
└── routes/
├── init.py
├── auth.py
└── tasks.py
app.py
: Archivo principal de la aplicación que configura y ejecuta la aplicación Flask.config.py
: Configuración de la base de datos y variables de la aplicación.models.py
: Definición de los modelos de SQLAlchemy para las tablasUsuario
yTarea
.services.py
: Lógica de negocio y servicios para manejar operaciones como registro de usuarios, autenticación, creación y obtención de tareas.routes/
: Carpeta que contiene los blueprints de los endpoints de la API.auth.py
: Blueprint para las rutas relacionadas con la autenticación (/register
,/login
).tasks.py
: Blueprint para las rutas relacionadas con las tareas (/tasks
).
Para replicar la base de datos ejeuta este script en el managment de SQL Server
-
Clona el repositorio desde GitHub:
https://github.com/MrDavidAlv/API-REST-PYTHON-FLASK.git
-
Instala las dependencias necesarias:
pip install -r requirements.txt
-
Configura las variables de entorno en el archivo .env:
DATABASE_URI="string de conexión a SQL Server" SECRET_KEY=your_secret_key JWT_SECRET_KEY=your_jwt_secret_key
-
Ejecuta la aplicación:
python app.py
- Registro de Usuario:
POST /register
Content-Type: application/json
{
"usuario": "ejemplo_usuario",
"contraseña": "password123"
}
- Inicio de Sesión:
POST /login
Content-Type: application/json
{
"usuario": "ejemplo_usuario",
"contraseña": "password123"
}
- Creación de Tarea:
POST /tasks
Content-Type: application/json
Authorization: Bearer <tu_token_jwt>
{
"titulo": "Nueva tarea",
"descripcion": "Descripción de la tarea"
}
- Listado de Tareas:
GET /tasks
Authorization: Bearer <tu_token_jwt>