NestJS pour TypeScript : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction à NestJS

\n\n

NestJS (Nest) est un framework progressif pour créer des applications serveur efficaces, évolutives et fiables sur Node.js. Il utilise TypeScript comme langage principal et s'inspire de l'architecture d'Angular. NestJS fournit une architecture d'application prête à l'emploi qui aide les développeurs à créer un code bien structuré, testable et maintenable.

\n\n

L'objectif principal de NestJS est de résoudre le problème de l'absence d'architecture claire dans l'écosystème Node.js. Contrairement à Express ou Fastify, qui sont minimalistes et n'imposent pas de structure, NestJS propose des abstractions prêtes à l'emploi : modules, contrôleurs, services, fournisseurs et middleware. Cela est particulièrement utile pour les grands projets d'entreprise où la prévisibilité et la standardisation du code sont importantes.

\n\n

NestJS est construit au-dessus des frameworks HTTP (par défaut Express, mais Fastify peut être utilisé) et leur ajoute un puissant système d'injection de dépendances (Dependency Injection), des décorateurs, des Guards, des Interceptors, des Pipes et des Filters. Le framework utilise activement les décorateurs TypeScript, ce qui rend le code déclaratif et lisible.

\n\n

Installation de NestJS

\n\n

Pour installer NestJS, vous aurez besoin de Node.js (version 16 ou supérieure) et d'un gestionnaire de paquets npm (ou yarn, pnpm).

\n\n

La façon la plus simple de commencer est d'utiliser Nest CLI :

\n\n
npm install -g @nestjs/cli\nnest new my-nest-project\ncd my-nest-project\nnpm run start:dev
\n\n

Si vous préférez installer NestJS dans un projet existant :

\n\n
npm install @nestjs/core @nestjs/common @nestjs/platform-express reflect-metadata rxjs typescript @types/node
\n\n

Vous devrez également installer TypeScript et ts-node pour le développement :

\n\n
npm install -D typescript @types/node ts-node
\n\n

Important : NestJS utilise la bibliothèque reflect-metadata pour fonctionner avec les décorateurs. Assurez-vous qu'elle est importée dans le fichier principal main.ts :

\n\n
import "reflect-metadata";
\n\n

Démarrage rapide avec un exemple de code

\n\n

Créons une simple application REST API avec un seul endpoint qui renvoie un message de bienvenue.

\n\n

Structure du projet :

\n
src/\n├── app.controller.ts\n├── app.module.ts\n├── app.service.ts\n└── main.ts
\n\n

main.ts — point d'entrée :

\n
import { NestFactory } from '@nestjs/core';\nimport { AppModule } from './app.module';\n\nasync function bootstrap() {\n  const app = await NestFactory.create(AppModule);\n  await app.listen(3000);\n  console.log('Server is running on http://localhost:3000');\n}\nbootstrap();
\n\n

app.module.ts — module racine :

\n
import { Module } from '@nestjs/common';\nimport { AppController } from './app.controller';\nimport { AppService } from './app.service';\n\n@Module({\n  imports: [],\n  controllers: [AppController],\n  providers: [AppService],\n})\nexport class AppModule {}
\n\n

app.controller.ts — contrôleur :

\n
import { Controller, Get } from '@nestjs/common';\nimport { AppService } from './app.service';\n\n@Controller()\nexport class AppController {\n  constructor(private readonly appService: AppService) {}\n\n  @Get()\n  getHello(): string {\n    return this.appService.getHello();\n  }\n}
\n\n

app.service.ts — service (logique métier) :

\n
import { Injectable } from '@nestjs/common';\n\n@Injectable()\nexport class AppService {\n  getHello(): string {\n    return 'Hello World!';\n  }\n}
\n\n

Lancez l'application avec la commande npm run start:dev et ouvrez http://localhost:3000. Vous verrez "Hello World!".

\n\n

Méthodes et fonctions principales de NestJS

\n\n

Examinons 10 éléments clés de NestJS utilisés dans chaque projet.

\n\n

1. @Module() — décorateur de module

\n

Ce qu'il fait : Définit un cl

Recommendations