Bonjour Forge¶
Premier contact avec Forge : du chemin le plus court entre une requête HTTP et une réponse texte. Sans base de données. Sans entité. Sans template Jinja2. Sans CRUD.
Ce parcours suit l'ordre pédagogique du starter d'entrée Bonjour Forge :
Forge n'est pas encore installé ?
Commencez par le parcours d'installation : VM Debian vierge, pipx, depuis GitHub, Windows + WSL (parcours complet).
1. Lancer Forge avec forge run¶
Une fois Forge installé et un projet créé (forge new mon-projet), la
commande officielle de développement est :
forge run lit APP_ENV (défaut dev), démarre le serveur de
développement et active l'autoreload : python app.py est redémarré
automatiquement dès qu'un fichier applicatif change. Pour désactiver
l'autoreload (chemin legacy) :
En production (APP_ENV=prod), forge run refuse de démarrer le
serveur intégré et affiche la stratégie WSGI recommandée — voir
Déploiement WSGI minimal.
Une fois le serveur démarré, ouvrez https://localhost:8000/welcome
dans votre navigateur.
2. Comprendre la route¶
Toutes les routes Forge sont déclarées explicitement dans
mvc/routes.py. Aucune découverte automatique, aucune convention
cachée :
# mvc/routes.py
from mvc.controllers.welcome_controller import WelcomeController
with router.group("", public=True) as pub:
pub.add("GET", "/welcome", WelcomeController.index, name="welcome_index")
pub.add("GET", "/welcome/greet", WelcomeController.greet, name="welcome_greet")
Chaque ligne associe une méthode HTTP et un chemin à une méthode de
contrôleur. Ce qui est dans mvc/routes.py est exactement ce qui est
routé.
3. Comprendre le contrôleur¶
Un contrôleur Forge est une classe Python qui reçoit une Request et
retourne une Response. Les méthodes sont statiques, typées et
explicites :
from core.http.request import Request
from core.http.response import Response
from core.mvc.controller.base_controller import BaseController
class WelcomeController(BaseController):
@staticmethod
def index(request: Request) -> Response:
...
Les annotations request: Request -> Response sont systématiques pour
que Pylance/VS Code propose l'autocomplétion sur request.param(...),
request.form(...), request.json(...), request.file(...),
request.route_param(...) et request.header(...) sans import manuel.
Voir Convention HTTP inspectable.
4. Retourner Response.text("Bonjour Forge")¶
La méthode la plus courte : aucun template, aucun moteur Jinja2.
Response.text(...) produit une réponse text/plain; charset=utf-8.
Le navigateur sur /welcome affiche simplement :
Le cycle complet est minimal :
5. Utiliser request.param(...)¶
request.param("name", default="Forge") retourne la première valeur
du paramètre ?name=..., ou la valeur par défaut.
@staticmethod
def greet(request: Request) -> Response:
name = request.param("name", default="Forge")
return Response.text(f"Bonjour {name}")
https://localhost:8000/welcome/greet?name=Roger→Bonjour Rogerhttps://localhost:8000/welcome/greet→Bonjour Forge
D'autres accesseurs nommés couvrent les autres canaux d'entrée :
| Accesseur | Lit | Retourne |
|---|---|---|
request.param(key, default=None) |
query string | str ou default |
request.form(key, default=None) |
formulaire application/x-www-form-urlencoded |
str ou default |
request.json(key, default=None) |
body JSON | valeur JSON ou default |
request.header(name, default=None) |
en-têtes HTTP (insensible à la casse) | str ou default |
request.route_param(key, default=None) |
paramètres dynamiques (/contacts/{id}) |
str ou default |
request.file(key, default=None) |
upload multipart/form-data |
UploadedFile ou default |
Récapitulatif des outils livrés¶
Cette progression met en jeu les briques DX livrées depuis la phase beta 11 :
| Brique | Rôle |
|---|---|
forge run |
Point d'entrée officiel — autoreload par défaut en dev |
Request inspectable |
Accesseurs nommés (param, form, json, header, …) |
Response.text(...) |
Réponse text/plain; charset=utf-8 |
Response.html(...) |
Réponse text/html; charset=utf-8 |
Response.json(...) |
Réponse application/json; charset=utf-8 |
| Squelettes typés | request: Request -> Response partout par défaut |
Starter welcome (Bonjour Forge) |
Parcours d'entrée sans BDD ni template |
Aller plus loin¶
Une fois ce premier contact assimilé :
| Étape | Ressource |
|---|---|
| Progression officielle des starters | Progression recommandée |
| Démarrer un projet réel | Démarrer avec Forge |
| Parcours guidé avec MariaDB | Guide de démarrage |
| Première application complète | Application complète |
| Catalogue des starters | Vue d'ensemble des starters |
Détails du starter welcome |
Bonjour Forge — starter |
| Référence HTTP complète | Convention HTTP inspectable |
| Toutes les commandes CLI | Commandes CLI |
Ne sautez pas directement vers le CRUD Contacts
Le starter Contacts CRUD est l'étape 9 d'une progression de
neuf paliers. Plusieurs notions intermédiaires (vue Jinja2, route
dynamique, formulaire POST, validation, SQL) méritent leurs propres
starters — voir la
progression recommandée.
Voir aussi¶
- API Forge complète
- Roadmap Forge — tickets DX livrés depuis la phase beta 11
- Contrat de stabilité — fichiers garantis préservés
- Release et compatibilité — versions supportées