Convention de route Forge¶
Cette page décrit la règle unique de déclaration des routes Forge : à partir
du contrôleur et de la méthode visés, elle fixe le chemin (URL) et le nom
(name=). Décision : ADR-029.
Pourquoi une règle mécanique
Une route doit pouvoir se déduire du contrôleur et de la méthode qu'elle
vise, et inversement. Cela rend les routes prévisibles, faciles à lire, à
générer et à apprendre. Une seule façon officielle de faire (charte
principe 11).
La règle¶
Une route vise toujours une méthode d'un contrôleur. On en tire deux jetons :
- jeton contrôleur : le nom de la classe sans le suffixe
Controller; - jeton méthode : le nom de la méthode Python.
Le chemin (URL)¶
- méthode
index: seulement le jeton contrôleur, en kebab-case
(/welcome,/user-profile) ; - toute autre méthode :
/<contrôleur>/<méthode>en kebab-case, suivi des
éventuels paramètres de route (/note/edit/{id}).
Le nom (name=)¶
- toujours
<contrôleur>-<méthode>, séparateur tiret ; le jeton méthode
garde ses underscores (welcome-index,welcome-query_params,note-edit).
Exemples¶
with router.group("", public=True) as public:
# index : chemin = nom du contrôleur seul
public.add("GET", "/welcome", WelcomeController.index, name="welcome-index")
# autre méthode : contrôleur / méthode
public.add("GET", "/welcome/query-params", WelcomeController.query_params, name="welcome-query_params")
# méthode avec paramètre de route
public.add("GET", "/note/edit/{id}", NoteController.edit, name="note-edit")
public.add("POST", "/note/delete/{id}", NoteController.delete, name="note-delete")
| Contrôleur.méthode | Chemin | name= |
|---|---|---|
WelcomeController.index |
/welcome |
welcome-index |
WelcomeController.query_params |
/welcome/query-params |
welcome-query_params |
NoteController.index |
/note |
note-index |
NoteController.edit (id) |
/note/edit/{id} |
note-edit |
ArticleController.create |
/article/create |
article-create |
ArticleController.api_index |
/article/api-index |
article-api_index |
Casse des jetons¶
| Jeton | Dans le chemin | Dans le nom |
|---|---|---|
Contrôleur (UserProfileController) |
kebab-case : user-profile |
snake_case : user_profile |
Méthode (query_params) |
kebab-case : query-params |
tel quel : query_params |
Exception : la racine de l'application¶
Le point d'entrée de l'application reste la racine /. HomeController.index est
donc mappé sur / (et non /home), nommé home-index. C'est la seule
exception.
Portée¶
La convention s'applique partout où des routes Forge sont déclarées : squelette,
starters (actuels et futurs), parcours welcome, et code généré par make:crud.
La mise en conformité de l'existant est suivie par des tickets dédiés
(voir ADR-029, section Migration).