API REST para gestión de productos desarrollada con FastAPI que incluye:
- Operaciones CRUD completas
- Sincronización con API externa (Fakestore API)
- Pruebas de integración
- Documentación interactiva
- Python 3.13
- FastAPI - Framework web
- SQLModel - ORM y modelos
- MySQL - Base de datos
- Pytest - Pruebas automatizadas
- Python 3.10 o superior
- MySQL 8.0+
- Git
El esquema de la base de datos MySQL se encuentra detallado en el archivo db_schema.sql. Este archivo incluye la creación del esquema llamado my_app y la tabla products con sus respectivas columnas y configuraciones.
El esquema de la base de datos MySQL se encuentra detallado en el archivo db_schema.sql. Este archivo incluye la creación del esquema llamado my_app y la tabla products con sus respectivas columnas y configuraciones.
🛠️ Creación de la Base de Datos:
Ejecuta el archivo db_schema.sql en tu terminal de MySQL o a través de MySQL Workbench. Este script creará automáticamente el esquema my_app y la tabla products con la estructura definida.
🔗 Configuración de la Conexión:
Una vez que hayas ejecutado el esquema, configura la conexión a la base de datos my_app en el archivo .env. Reemplaza los valores predeterminados con tu información de conexión específica. La variable DATABASE_LINK debe tener el siguiente formato, asegurándote de que el nombre de la base de datos sea my_app:
DATABASE_LINK=mysql+mysqlconnector://<usuario>:<contraseña>@<host>:<puerto>/my_app
Además tambien necesitas esta variable de ambiente para la URL de la api de productos externa:
EXTERNAL_API_LINK=https://fakestoreapi.com
- Clonar repositorio:
git clone https://github.com/JevDev2304/backendCIC.git- Configurar entorno virtual:
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows- Instalar dependencias:
pip install -r requirements.txt- Configurar variables de entorno:
cp .env.example .env
# Editar el archivo .env con tus credencialesIniciar el servidor de desarrollo:
uvicorn app.main:app --reloadAcceder a la documentación:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
GET /products- Listar todos los productosGET /products/{id}- Obtener producto específicoPOST /products- Crear nuevo productoPUT /products/{id}- Actualizar productoDELETE /products/{id}- Eliminar productoPOST /products/sync- Sincronizar con API externa
Ejecutar pruebas de integración:
pytest-
Autenticación y Autorización
- Implementar JWT con refresh tokens
- Protección de endpoints sensibles
-
Modelado de Datos
- Normalizar estructura con tabla Categorías
- Añadir relaciones entre modelos
-
Pruebas Automatizadas
- Ampliar cobertura con pruebas unitarias
- Implementar mocks para servicios externos
- Pruebas de rendimiento
-
Contenedorización con Docker
- Crear un Dockerfile optimizado para la aplicación
- Configurar docker-compose para orquestar servicios (app, base de datos, etc.)
- Implementar volúmenes para persistencia de datos
- Definir variables de entorno para diferentes entornos (desarrollo, producción)
- Automatizar el despliegue y pruebas en contenedores