API REST
- MON
- 2024-2025
- temps 2
- API Rest
- Serigne Mbaye Sy AMAR
Ce MON traite les APIs REST, Une API REST permet la communication entre systèmes via HTTP.
- Des connaissance de base en NestJs Mon Mon 2.1
- Comprendre Les bases de React Mon Mon 1.1
Le but de ce MON est d'acquérir des compétences sur les API REST afin de pouvoir les utiliser dans mon POK. Veuillez consulter mon POK (sous format de lien) pour une application directe de tout ce que nous allons aborder dans ce MON, qui sera divisé en deux grandes questions : comment intégrer les API REST dans NestJS, puis comment intégrer les API REST dans React.
Introduction :
Cette première partie du MON (la base), à savoir qu'est-ce qu'une API et son fonctionnement, a été traitée de manière très explicite par Baptiste Audouin dans son MON Temps 1.
Pour répondre aux besoins spécifiques de mon POK (sous format de lien), je vais me concentrer davantage sur des aspects concrets : comment utiliser une API REST dans un projet intégrant un backend développé avec NestJS et un frontend avec React.
Comment intégrer des API REST dans NestJS?
L'intégration d'API REST dans NestJS consiste à créer des contrôleurs, des services et des modèles pour gérer les données et répondre aux requêtes HTTP. Je me suis appuyé principalement sur la documentation officielle de NestJS ainsi que sur des exemples sur GitHub pour la mise en place de l'API.
1. Créer une Ressource avec Nest CLI
NestJS propose une commande pour générer rapidement une ressource REST complète (contrôleur, service et module).
Exemple : Générer une ressource pour les posts.
nest generate resource posts
Pour comprendre au mieux la structure des fichiers dans Nestjs ainsi que la base, vous pouvez consulter mon MON (2.1)(lien au niveau des prerequis).
Le CLI crée les fichiers suivants dans src/posts/
:
posts.module.ts
posts.service.ts
posts.controller.ts
- DTOs :
create-post.dto.ts
,update-post.dto.ts
2. Configurer un Contrôleur REST
Le contrôleur gère les routes et définit les endpoints de l'API. Modifie posts.controller.ts
pour gérer les opérations CRUD de base.
Exemple de contrôleur REST pour les posts :
La section Controllers de la documentation NestJS m'a aidé à comprendre la structure des fichiers, les méthodes HTTP, et les annotations utilisées comme @Controller
et @Get
, avec un exemple concret d’un contrôleur simple sur GitHub, gérant des opérations CRUD dans GitHub - NestJS Examples, notamment dans la section cats.controller.ts
. Les liens se trouvent dans la partie ressources.
3. Implémenter la Logique Métier dans le Service
Le fichier posts.service.ts
contient la logique métier. C'est ici que tu gères les interactions avec la base de données ou d'autres ressources.
Exemple de service pour gérer les posts en mémoire (avant d’ajouter MongoDB) :
En plus de NestJS Documentation - Providers qui explique comment injecter et structurer des services dans une application NestJS, j'ai consulte aussi GitHub - NestJS Examples la section cats.service.ts
qui fournit un service fonctionnel pour gérer la logique métier.
4. Ajouter des DTOs pour Valider les Données
Les DTOs (Data Transfer Objects) permettent de valider et de typer les données envoyées par le client.
Exemple de create-post.dto.ts
:
La section Controllers de la documentation NestJS m'a aidé à comprendre la structure des fichiers, les méthodes HTTP, et les annotations utilisées comme @Controller
et @Get
, avec un exemple concret d’un contrôleur simple sur GitHub, gérant des opérations CRUD dans GitHub - NestJS Examples, notamment dans la section cats.controller.ts
. Les liens se trouvent dans la partie ressources.
5. Connecter une Base de Données (MongoDB)
-
Installer les Dépendances MongoDB :
- Installe Mongoose pour interagir avec une base MongoDB.
npm install @nestjs/mongoose mongoose
-
Configurer Mongoose dans le Module Principal :
- Modifie
app.module.ts
pour connecter NestJS à MongoDB.
- Modifie
- Définir un Schéma Mongoose pour les Posts :
- Ajoute un fichier
post.schema.ts
dans le dossierposts
.
- Ajoute un fichier
- Lier le Modèle au Module Post :
- Modifie
posts.module.ts
pour inclure le schéma.
- Modifie
- Adapter le Service pour Utiliser MongoDB :
- Modifie
posts.service.ts
pour interagir avec MongoDB via Mongoose.
- Modifie
Avec NestJS Documentation - Databases et GitHub - MongoDB with NestJS, j'ai pu comprendre comment connecter MongoDB à une application NestJS avec Mongoose, définir des schémas et utiliser des modèles avec un projet complet montrant l'intégration de MongoDB. Les liens se trouvent dans la partie sources.
6. Ajouter Swagger pour Documenter les API
-
Installer le Module Swagger :
npm install @nestjs/swagger
-
Configurer Swagger dans
main.ts
:
- Ajouter des Décorateurs dans les DTOs : (lien github ici)
Pour comprendre cette partie, j'ai consulté GitHub - Swagger Integration Example, qui fournit un exemple complet avec Swagger intégré pour documenter l’API.