28-2 Création d'un contrôleur ProjetsController
Le module seul ne fait pas grand-chose, il ne permet que de regrouper ensemble les classes (contrôleurs, services, entités, etc.) liées à une fonctionnalité.
Pour recevoir des requêtes, les traiter et retourner une réponse, il nous faut un contrôleur.

Un contrôleur est responsable de:
- Recevoir les requêtes HTTP
- Associer une action à effectuer en fonction de la méthode (ex.:
GET,POST) et du chemin (/projets/2) - Faire appel à un ou plusieurs services pour la logique applicative liée à la requête
- Retourner une réponse
Créer un contrôleur Projets
Pour créer un contrôleur, on peut utiliser le CLI de Nest, tout comme lors de la création du module:
nest g controller projets
Vérification des changements apportés
Automatiquement, le contrôleur a été créé sous le dossier du module Projets (src/projets/projets.controller.ts) et dans ProjetsModule, le nouveau contrôleur a été ajouté à la liste des contrôleurs faisant partie du module:
@Module({
controllers: [ProjetsController]
})
export class ProjetsModule {}
Lors de la création d'un contrôleur, si un module portant le même nom existe, Nest assignera automatiquement le contrôleur au module. S'il n'y avait pas eu de module Projets, le contrôleur aurait simplement été ajouté à la racine du projet comme AppController
De plus, vous remarquerez qu'un fichier de test a été créé (src/projets/projets.controller.spec.ts). Nous verrons plus tard tout ce qui a trait aux tests, mais sachez qu'il s'agit d'un fichier utilisé dans le contexte des tests automatisés.
Détails du contrôleur et chemin d'accès de base
Le contrôleur est vide pour le moment, mais remarquez le décorateur @Controller, accompagné du préfixe projets en paramètre:
@Controller('projets')
export class ProjetsController {}
Le paramètre projets passé au décorateur signifie que le chemin d'accès de base pour toutes les actions de ce contrôleur sera /projets.
Nous pourrons définir des chemins plus spécifiques pour certaines actions/fonctions (ex.: utiliser un paramètre dynamique :id pour recevoir un id), mais ces actions auront toujours comme préfixe /projets.