FastAPI
Descripción general
FastAPI es un framework web de Python moderno y de alto rendimiento para crear APIs. Ofrece documentación interactiva automática, validación con type hints y soporte asíncrono de serie.
Inicio rápido
Crear repositorio desde plantilla
En tu panel, ve a la pestaña Tools & Deployment. Haz clic en el botón "New Repository", selecciona la plantilla de FastAPI del menú desplegable, introduce un nombre de repositorio y un subdominio, y luego haz clic en "Create Repository".
Clona tu repositorio
git clone https://<git-server>/<username>/<repo-name>.git
cd <repo-name>
Instala las dependencias
pip install -r requirements.txt
Inicia el servidor de desarrollo
uvicorn app.main:app --reload
El servidor se ejecuta en http://localhost:8000. Documentación interactiva de la API en http://localhost:8000/docs.
Sube tus cambios
git add .
git commit -m "Initial setup"
git push origin main
Desarrollo local con Docker
Si no tienes Python instalado localmente, puedes usar Docker para ejecutar tu aplicación FastAPI.
Ejecutar comandos con Docker
# Install dependencies
docker run --rm -v $(pwd):/app -w /app python:3.12 pip install -r requirements.txt
# Run development server
docker run --rm -v $(pwd):/app -w /app -p 8000:8000 python:3.12 sh -c "pip install -r requirements.txt && uvicorn app.main:app --host 0.0.0.0 --reload"
Configuración de la base de datos
La plataforma NStrim te proporciona una base de datos MySQL/MariaDB. Configura tu conexión en el archivo .env o directamente en tu módulo de configuración de la base de datos.
DATABASE_URL=mysql+pymysql://<username>:<password>@db.<session-domain>:3306/<username>
student01). Consulta la sección de credenciales de tu panel para los valores exactos.Estructura del proyecto
├── app/
│ ├── main.py # Punto de entrada de la app FastAPI
│ ├── routers/ # Módulos de rutas
│ ├── models/ # Modelos SQLAlchemy
│ ├── schemas/ # Esquemas Pydantic
│ └── database.py # Conexión a la base de datos
├── templates/ # Plantillas Jinja2
├── static/ # CSS, JS, imágenes
├── requirements.txt # Dependencias Python
└── Dockerfile # Configuración Docker
Tareas comunes
Crear un endpoint de la API
from fastapi import APIRouter
router = APIRouter()
@router.get("/users")
async def get_users():
return [{"name": "Alice"}, {"name": "Bob"}]
@router.post("/users")
async def create_user(name: str, email: str):
return {"name": name, "email": email}
Usar SQLAlchemy
from sqlalchemy import Column, Integer, String
from app.database import Base
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True, index=True)
name = Column(String(100))
email = Column(String(255), unique=True)
Esquema Pydantic para validación
from pydantic import BaseModel
class UserCreate(BaseModel):
name: str
email: str
class UserResponse(BaseModel):
id: int
name: str
email: str
class Config:
from_attributes = True
Comandos útiles
uvicorn app.main:app --reload
Iniciar el servidor de desarrollo con auto-reload
pip install -r requirements.txt
Instalar dependencias
pip freeze > requirements.txt
Guardar dependencias actuales
Resolución de problemas
OperationalError: Can't connect to MySQL server
Causa: El host de la base de datos es incorrecto o no es accesible.
Solución: Comprueba que DATABASE_URL coincide con el host de la base de datos de tu panel.
ModuleNotFoundError: No module named 'app'
Solución: Asegúrate de ejecutar uvicorn desde el directorio raíz del proyecto y que el archivo app/__init__.py exista.
422 Unprocessable Entity
Solución: FastAPI valida los datos de la petición automáticamente. Consulta el cuerpo de la respuesta para ver qué campos fallaron en la validación. Visita /docs para ver el formato esperado de la petición.