Notion de contrôleur frontal

Cette page est une introduction générale à la notion de contrôleur frontal et au routage d'URL. Il servira de rappel à ceux qui ont déjà pratiqué MVC, de découverte pour les autres !

Contrôleur frontal : définition

Un contrôleur frontal est un composant dont le rôle est d'aiguiller les requêtes émises par les utilisateurs d'une application vers les contrôleurs applicatifs adéquats.

Pour réaliser cette tâche les contrôleurs frontaux, que l'on appelle aussi parfois dispatchers, associent des patterns d'URL avec des noms de contrôleurs.

Un exemple simple

Dans notre application chistera, les utilisateurs pourront accéder à un tableau de bord, ainsi qu'aux différents backlogs. Pour cela, ils auront à leur disposition ces deux types d'URL :

  • /dashboard/ devra afficher le tableau de bord.
  • /backlog/<id_du_backlog>/ devra afficher le backlog ayant pour identifiant id_du_backlog.

Bien entendu, l'affichage du dashboard fera l'objet d'un contrôleur, tout comme l'affichage d'un backlog.

Notre front controller aura donc pour tâche de rediriger les requêtes d'URL /dashboard/ vers notre contrôleur gérant l'affichage du dashboard, et de rediriger les requêtes d'URL /backlog/<id_du_backlog>/ vers notre contrôleur gérant l'affichage des backlogs.

Testez vos connaissances…

Un contrôleur frontal est un composant dont le rôle est de…
  • Router des types d'URL vers les contrôleurs adéquats.
  • Router des types d'URL vers les templates adéquats.
  • Réaliser les traitements métier nécessaires pour répondre à une requête de l'utilisateur.
  • S'assurer que toutes les routes nécessaires au fonctionnement d'un projet ou d'une application sont correctement définies.
Dans l'URL suivante, à quoi sert la variable slug_topic : /forum/topic/<slug_topic>/
  • À repérer le topic que le contrôleur de topics devra afficher.
  • Il ne sert à rien et est inséré dans les URL à des fin de SEO.
  • Arf, c'est quoi un slug ?

Un slug est une chaîne de caractère, une partie d'URL, qui ne comporte pas d'espace et d'accents. Il permet de repérer quelque chose, et est ainsi une alternatives aux identifiants numériques que l'on traîne souvent dans les URLs et qui ne sont pas SEO-friendly.

Par exemple, /forum/topic/quelques-remarques-sur-django/ (ou encore /forum/topic/quelques-remarques-sur-django/154/) peut remplacer avantageusement /forum/topic/154/ (voire pire : /forum/topic.html?id=154).