Forge

Le routeur

Le routeur associe chaque URL entrante à un handler de contrôleur. Les routes sont déclarées explicitement dans mvc/routes.py.

Structure de mvc/routes.py

from core.http.router import Router
from mvc.controllers.welcome_controller import WelcomeController

router = Router()

# Groupe public (pas d'authentification requise)
with router.group("", public=True) as pub:
    pub.add("GET", "/welcome",         WelcomeController.index,   name="welcome_index")
    pub.add("GET", "/welcome/cycle",   WelcomeController.cycle,   name="welcome_cycle")
    # ... autres routes welcome

# Groupe protégé (authentification requise)
# with router.group("") as app:
#     app.add("GET", "/dashboard", ...)  ← déclaré par d'autres starters

Routes statiques

pub.add("GET", "/welcome", WelcomeController.index)

URL fixe. Correspond exactement à /welcome.

Routes dynamiques

pub.add("GET", "/contacts/{id}", ContactController.show)

{id} est capturé dans request.route_params["id"].

Groupe avec préfixe

with router.group("/contacts") as g:
    g.add("GET",  "",      ContactController.index)  # → /contacts
    g.add("GET",  "/{id}", ContactController.show)   # → /contacts/123

Le préfixe de groupe est concaténé aux chemins des routes.

Principe Forge : toutes les routes sont déclarées dans un seul fichier visible. Aucune route auto-découverte, aucune convention magique. Ce que vous lisez dans mvc/routes.py est exactement ce qui est routé.

← Réponse 404 →