Este repositorio es un ejemplo de una API RESTful implementada con FastAPI. Incluye conceptos como DDD, Vertical Slices, Inyección de Dependencias, Seguridad, Swagger y más.
En este vídeo tratamos la versión inicial, básica pero funcional, aunque claro, no hay seguridad ni ninguna de las técnicas que se han desarrollado a posteriori.
TODO: grabar y publicar el vídeo.
- FastAPI: Framework web moderno y de alto rendimiento para construir APIs con Python 3.7+ basado en estándares como OpenAPI y JSON Schema.
- RESTful API: Diseño de la API siguiendo los principios REST.
- Domain-Driven Design (DDD): Separación clara de las responsabilidades y lógica del dominio.
- Vertical Slices: Organización del código por características en lugar de por capas técnicas.
- Inyección de Dependencias: Gestión e inyección de dependencias con FastAPI.
- Seguridad: Implementación de autenticación y autorización.
- Swagger: Documentación interactiva de la API.
qna_api/
│
├── auth/
│ ├── models.py
│ ├── routes.py
│ └── service.py
│
├── core/
│ ├── base_repository.py
│ ├── config.py
│ ├── constants.py
│ ├── database.py
│ └── logging.py
│
├── domain/
│ ├── answer.py
│ ├── question.py
│ └── user.py
│
├── questions/
│ ├── models.py
│ ├── repositories.py
│ ├── routes.py
│ └── services.py
│
└── user/
├── controller.py
├── models.py
├── repository.py
└── service.py
-
Clona el repositorio:
git clone https://github.com/jgcarmona-com/fastapi-rest-api-tutorial.git
-
Navega al directorio del proyecto:
cd fastapi-rest-api-tutorial
-
Crea un entorno virtual y activa:
python -m venv .venv source venv/bin/activate # En Windows usa `venv\Scripts\activate`
-
Instala las dependencias:
pip install -r requirements.txt
-
Configura las variables de entorno: Antes de iniciar la aplicación, necesitas configurar las variables de entorno. Sigue estos pasos:
- Copia el archivo
.env.example
a.env
:
cp .env.example .env
- Rellena las variables de entorno en el archivo
.env
con tus propios valores:
SECRET_KEY=your_secret_key ALGORITHM=HS256 ACCESS_TOKEN_EXPIRE_MINUTES=30 DATABASE_URL=sqlite:///./sql_app.db INITIAL_ADMIN_USERNAME=admin INITIAL_ADMIN_EMAIL=admin@example.com INITIAL_ADMIN_PASSWORD=admin
- Copia el archivo
-
Inicia la aplicación: Desde vscode selecciona la opción local o docker y ejecútalo.
- Visita
http://127.0.0.1:8000
y te redirigirá a /doc para ver la documentación interactiva de la API (swagger). - Visita
http://127.0.0.1:8000/redoc
para ver la documentación alternativa de la API.