Passer au contenu

Module de Route

Dans une application HTTP (par exemple, une API REST), le chemin de route pour un gestionnaire est déterminé en concaténant le préfixe (optionnel) déclaré pour le contrôleur (dans le décorateur @Controller) et tout chemin spécifié dans le décorateur de méthode (par exemple, @Get(‘utilisateurs’)). Vous pouvez en apprendre davantage à ce sujet dans cette section. De plus, vous pouvez définir un préfixe global pour toutes les routes enregistrées dans votre application, ou activer la versioning.

Il peut également y avoir des cas particuliers où la définition d’un préfixe au niveau du module (et donc pour tous les contrôleurs enregistrés dans ce module) peut s’avérer utile. Par exemple, imaginez une application REST qui expose plusieurs points de terminaison différents utilisés par une partie spécifique de votre application appelée “Tableau de bord”. Dans ce cas, au lieu de répéter le préfixe /dashboard dans chaque contrôleur, vous pourriez utiliser un module utilitaire RouterModule, comme suit:

Exemple de module de route
@Module({
imports: [
DashboardModule,
RouterModule.register([
{
path: 'dashboard',
module: DashboardModule,
},
]),
],
})
export class AppModule {}

De plus, vous pouvez définir des structures hiérarchiques. Cela signifie que chaque module peut avoir des modules children. Les modules enfants hériteront du préfixe de leur parent. Dans l’exemple suivant, nous allons enregistrer le AdminModule en tant que module parent de DashboardModule et MetricsModule.

Exemple de modules hiérarchiques
@Module({
imports: [
AdminModule,
DashboardModule,
MetricsModule,
RouterModule.register([
{
path: 'admin',
module: AdminModule,
children: [
{
path: 'dashboard',
module: DashboardModule,
},
{
path: 'metrics',
module: MetricsModule,
},
],
},
]),
],
});

Dans l’exemple ci-dessus, tout contrôleur enregistré dans le DashboardModule aura un préfixe supplémentaire /admin/dashboard (car le module concatène les chemins de haut en bas - récursivement - du parent aux enfants). De même, chaque contrôleur défini dans le MetricsModule aura un préfixe de niveau module supplémentaire /admin/metrics.