Skip to content

Référence de configuration

Tous les paramètres sont gérés par AppSettings (Pydantic Settings) et peuvent être fournis via des variables d'environnement ou un fichier .env.

Noyau

VariableDéfautDescription
APP_ENVlocalEnvironnement d'exécution : local / test / production
APP_DEBUGfalseInclure les messages d'exception dans les réponses 500 quand true
APP_NAMEnene2-pythonNom de l'application

Sécurité

VariableDéfautDescription
SECURITY_HEADERS_ENABLEDtrueAjouter les en-têtes de sécurité à chaque réponse
MAX_BODY_SIZE1048576Taille maximale du corps de requête en octets (défaut 1 Mio)

En-têtes de sécurité ajoutés quand activés :

En-têteValeur
X-Content-Type-Optionsnosniff
X-Frame-OptionsDENY
Referrer-Policystrict-origin-when-cross-origin
Content-Security-Policydefault-src 'self'
Permissions-Policygeolocation=(), microphone=()

Limitation de débit

VariableDéfautDescription
THROTTLE_ENABLEDtrueActiver la limitation de débit
THROTTLE_LIMIT60Requêtes maximales par fenêtre
THROTTLE_WINDOW60Taille de la fenêtre en secondes

Utilise un algorithme à fenêtre fixe indexé sur l'IP du client. Dépasser la limite retourne 429 Too Many Requests avec un en-tête Retry-After.

CORS

VariableDéfautDescription
CORS_ENABLEDfalseActiver le middleware CORS
CORS_ORIGINS[]Origines autorisées (séparées par des virgules)
CORS_ALLOW_CREDENTIALSfalseAutoriser les credentials
CORS_ALLOW_METHODSGET,POST,PUT,DELETE,OPTIONSMéthodes autorisées
CORS_ALLOW_HEADERS*En-têtes autorisés

CORS_ORIGINS=* est interdit. Spécifiez toujours des origines explicites.

Authentification

VariableDéfautDescription
BEARER_TOKEN_ENABLEDfalseActiver l'auth par Bearer Token
BEARER_TOKENS[]Tokens valides — format tableau JSON : ["tok-1","tok-2"]
API_KEY_ENABLEDfalseActiver l'auth par clé API
API_KEYS[]Clés API valides — format tableau JSON : ["key-1","key-2"]

Les champs de liste nécessitent la syntaxe de tableau JSON dans .env. Écrire BEARER_TOKENS=token-1 (chaîne brute) provoque un JSONDecodeError au démarrage. Utilisez toujours BEARER_TOKENS=["token-1","token-2"]. La même règle s'applique à API_KEYS et CORS_ORIGINS.

Base de données

VariableDéfautDescription
DB_ADAPTERsqlitesqlite / mysql / pgsql
DB_NAME:memory:Chemin du fichier SQLite ou nom de la DB
DB_HOSTlocalhostHôte de la base de données (ignoré pour SQLite)
DB_PORT3306Port de la base de données (ignoré pour SQLite)
DB_USER""Utilisateur de la base de données (ignoré pour SQLite)
DB_PASSWORD""Mot de passe de la base de données — stocké comme SecretStr, jamais journalisé

db_url généré

AppSettings.db_url est une propriété calculée construite à partir des variables ci-dessus. Le tableau ci-dessous montre quelle URL est générée pour chaque adaptateur + valeurs communes de DB_NAME :

DB_ADAPTERDB_NAMEdb_url généré
sqlite:memory:sqlite:///:memory:
sqlite./data/app.dbsqlite:///./data/app.db
sqlite/var/lib/app.dbsqlite:////var/lib/app.db
mysqlmydbmysql+pymysql://user:pass@localhost:3306/mydb
pgsqlmydbpostgresql+psycopg2://user:pass@localhost:5432/mydb

Pour les bases SQLite en mémoire (DB_NAME=:memory:), passez poolclass=StaticPool à create_engine() pour que toutes les connexions partagent la même base de données en processus. Voir le guide how-to SQLAlchemy repository pour les détails.

Exemple .env

dotenv
APP_ENV=production
APP_DEBUG=false

THROTTLE_ENABLED=true
THROTTLE_LIMIT=100
THROTTLE_WINDOW=60

CORS_ENABLED=true
CORS_ORIGINS=["https://example.com","https://app.example.com"]

BEARER_TOKEN_ENABLED=true
BEARER_TOKENS=["secret-token-1","secret-token-2"]

DB_ADAPTER=mysql
DB_HOST=db.example.com
DB_PORT=3306
DB_NAME=myapp
DB_USER=myuser
DB_PASSWORD=supersecret

Commitez .env.example avec des valeurs vides. Gardez le vrai .env dans .gitignore.

Publié sous la licence MIT.