FastAPI
Aperçu
FastAPI est un framework web Python moderne et hautes performances pour la création d'API. Il propose une documentation interactive automatique, la validation des annotations de type et le support asynchrone prêt à l'emploi.
Démarrage rapide
Créer un dépôt à partir du modèle
Sur votre tableau de bord, allez dans l'onglet Tools & Deployment. Cliquez sur le bouton "New Repository", sélectionnez le modèle FastAPI dans le menu déroulant, saisissez un nom de dépôt et un sous-domaine, puis cliquez sur "Create Repository".
Cloner votre dépôt
git clone https://<git-server>/<username>/<repo-name>.git
cd <repo-name>
Installer les dépendances
pip install -r requirements.txt
Démarrer le serveur de développement
uvicorn app.main:app --reload
Le serveur s'exécute sur http://localhost:8000. Documentation API interactive sur http://localhost:8000/docs.
Pousser vos modifications
git add .
git commit -m "Initial setup"
git push origin main
Développement local avec Docker
Si vous n'avez pas Python installé localement, vous pouvez utiliser Docker pour exécuter votre application FastAPI.
Exécuter des commandes avec Docker
# Installer les dépendances
docker run --rm -v $(pwd):/app -w /app python:3.12 pip install -r requirements.txt
# Exécuter le serveur de développement
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"
Configuration de la base de données
La plateforme NStrim met à votre disposition une base de données MySQL/MariaDB. Configurez votre connexion dans le fichier .env ou directement dans votre module de configuration de base de données.
DATABASE_URL=mysql+pymysql://<username>:<password>@db.<session-domain>:3306/<username>
student01). Consultez la section identifiants de votre tableau de bord pour les valeurs exactes.Structure du projet
├── app/
│ ├── main.py # Point d'entrée de l'application FastAPI
│ ├── routers/ # Modules de routes
│ ├── models/ # Modèles SQLAlchemy
│ ├── schemas/ # Schémas Pydantic
│ └── database.py # Connexion à la base de données
├── templates/ # Templates Jinja2
├── static/ # CSS, JS, images
├── requirements.txt # Dépendances Python
└── Dockerfile # Config Docker
Tâches courantes
Créer un point d'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}
Utiliser 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)
Schéma Pydantic pour la validation
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
Commandes utiles
uvicorn app.main:app --reload
Démarrer le serveur de dev avec rechargement automatique
pip install -r requirements.txt
Installer les dépendances
pip freeze > requirements.txt
Sauvegarder les dépendances actuelles
Dépannage
OperationalError: Can't connect to MySQL server
Cause : L'hôte de la base de données est incorrect ou non accessible.
Solution : Vérifiez que DATABASE_URL correspond à l'hôte de la base de données indiqué sur votre tableau de bord.
ModuleNotFoundError: No module named 'app'
Solution : Assurez-vous d'exécuter uvicorn depuis le répertoire racine du projet et que app/__init__.py existe.
422 Unprocessable Entity
Solution : FastAPI valide les données de requête automatiquement. Consultez le corps de la réponse pour obtenir des détails sur les champs ayant échoué à la validation. Visitez /docs pour voir le format de requête attendu.