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.

Antes de empezar
Asegúrate de tener tu panel abierto - necesitarás las credenciales de Git que se muestran allí. Esta plantilla incluye FastAPI, Uvicorn, SQLAlchemy ORM, el driver PyMySQL, Pydantic y plantillas Jinja2.

Inicio rápido

1

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".

2

Clona tu repositorio

git clone https://<git-server>/<username>/<repo-name>.git
cd <repo-name>
3

Instala las dependencias

pip install -r requirements.txt
4

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.

5

Sube tus cambios

git add .
git commit -m "Initial setup"
git push origin main
Cada push a Git despliega tu aplicación automáticamente. Consulta tu URL de trabajo del módulo en el panel para ver tu sitio en vivo.

Desarrollo local con Docker

Si no tienes Python instalado localmente, puedes usar Docker para ejecutar tu aplicación FastAPI.

¿Qué es Docker?
Docker crea "contenedores" aislados con todo el software que necesitas (Python, pip) sin instalarlo en tu ordenador.

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>
Importante
El nombre y el usuario de tu base de datos suelen ser idénticos a tu nombre de usuario del panel (por ejemplo, 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.

Flujo de despliegue

Cambio de código git push pip install ¡En vivo!
Para más información, visita la documentación oficial de FastAPI.