API REST construida con FastAPI que ofrece flujo básico de autenticación (registro, login con JWT y perfil del usuario autenticado) respaldado por PostgreSQL y SQLAlchemy.
- FastAPI + Pydantic para validar y documentar los endpoints.
- Autenticación con contraseñas encriptadas vía
bcrypty emisión de tokens JWT. - Persistencia con SQLAlchemy y PostgreSQL (driver
psycopg). - Dependencias gestionadas mediante
requirements.txty scriptsuvicorn/fastapipara desarrollo.
| Capa | Tecnología |
|---|---|
| Framework | FastAPI |
| ORM | SQLAlchemy |
| DB | PostgreSQL |
| Auth | OAuth2 Password + JWT |
app/
├── core/ # Seguridad (hashing, JWT, dependencias de auth)
├── db.py # Conexion y SessionLocal
├── main.py # Punto de entrada de FastAPI
├── models.py # Modelos SQLAlchemy
├── routers/ # Rutas (auth, users, ...)
├── schemas.py # Esquemas Pydantic
└── test/ # Pruebas
| Variable | Descripción | Valor por defecto |
|---|---|---|
DATABASE_URL |
Cadena de conexión SQLAlchemy | postgresql+psycopg://postgres:k3n4y123@localhost:4000/world |
SECRET_KEY |
Clave para firmar JWT | CAMBIAME |
ACCESS_TOKEN_EXPIRE_MINUTES |
Minutos de vigencia del token | 60 |
Tip: crea un archivo
.enven la raíz y FastAPI lo recogerá si usaspython-dotenvo lo cargas desde tu shell antes de iniciar.
- Python 3.11+
- PostgreSQL en ejecución (local o remoto)
# 1. Crear entorno virtual (opcional pero recomendado)
python -m venv .venv
.\.venv\Scripts\activate
# 2. Instalar dependencias
pip install --upgrade pip
pip install -r requirements.txtDesde la raíz del repositorio (Mi-api):
python -m uvicorn app.main:app --reload
# o
python -m fastapi dev app/main.pyLa documentación interactiva estará disponible en http://localhost:8000/docs y la versión alternativa en http://localhost:8000/redoc.
Si existen pruebas en app/test, puedes ejecutarlas con:
pytest| Método | Ruta | Descripción |
|---|---|---|
| POST | /auth/register |
Crea un usuario nuevo. |
| POST | /auth/login |
Retorna access_token JWT. |
| GET | /auth/me |
Devuelve el usuario autenticado (requiere Authorization: Bearer <token>). |
- Añadir CRUD completo de usuarios
- Integrar Alembic para migraciones automáticas
- Cobertura de pruebas para flujos de autenticación