Aide-mémoire de la progression
Récapitulatif des 24 paliers de la progression Bonjour Forge, répartis en
trois niveaux, et des API Forge introduites à chaque étape. À garder sous la main
avant d'aborder les progressions opt-in autonomes.
Niveau débutant — 11 paliers
Niveau avancé — 5 paliers
Réponses (core.http.response.Response)
| Méthode |
Usage |
Response.text(body, status=200) |
Réponse text/plain |
Response.html(body) |
Réponse HTML brute |
Response.json(obj, status=200) |
Réponse application/json (données et code HTTP) |
Response.debug(obj) |
Page de debug (dev uniquement, 404 en prod) |
BaseController.render(template, request=..., context=...) |
Rendu d'un template Jinja2 |
BaseController.redirect(url) |
Redirection (motif POST-Redirect-GET) |
Lecture de la requête (core.http.request.Request)
| Accès |
Source |
request.param("k", default=...) |
Query string (?k=...) |
request.route_param("k") |
Segment de route (/x/{k}) |
request.form("k", default=...) |
Corps d'un formulaire POST |
request.file("k") |
Fichier reçu (multipart/form-data) |
request.header("Name", default=...) |
En-tête HTTP (Authorization…) |
request.data |
Vue globale (méthode, chemin, headers, body…) |
Base de données (core.database)
| Fonction |
Usage |
db.fetch_one(sql, params) |
Première ligne (dict) ou None |
db.fetch_all(sql, params) |
Liste de lignes |
db.insert(sql, params) |
Insertion (paramétrée) |
db.execute(sql, params) |
Écriture générique |
with transaction() as tx: + db.insert(..., tx=tx) |
Écritures atomiques (commit / rollback) |
Les requêtes restent paramétrées (placeholders ?) — jamais de
concaténation de valeurs. Forge garde le SQL visible. Les relations
s'écrivent à la main (JOIN), sans ORM.
Sessions & flash (core.security.session, core.sessions.manager)
| Fonction |
Usage |
get_session_store() |
Store de session (mémoire par défaut) |
get_session_id(request) / get_session(session_id) |
Identifier / lire la session |
set_flash(request, message) / get_flash(session_id) |
Message one-shot (lu et supprimé) |
Cookie de session durci : HttpOnly; SameSite=Strict; Secure.
Fichiers & email
| Fonction |
Usage |
forge_mvc_files.save_upload(file, category) |
Valider (extension, MIME, taille) puis stocker un fichier |
forge_mvc_mail.MailMessage(...) |
Décrire un email (sujet, destinataire, corps) |
forge_mvc_mail.Mailer(transport).send(message) |
Envoyer ; ConsoleTransport en dev (aucun SMTP) |
Sécurité
- CSRF : champ caché
csrf_token exigé sur chaque POST, vérifié
automatiquement (palier débutant 7).
- Validation serveur : ne jamais faire confiance au client ; valider avant
d'utiliser ou d'écrire (palier débutant 9).
- Uploads :
save_upload contrôle extension, type MIME et taille avant
toute écriture disque (palier avancé 2).
- API : vérifier l'autorisation (
Bearer) avant de produire la donnée ;
un refus renvoie 401 (palier avancé 4).