API REST

Tags :
  • MON
  • 2024-2025
  • temps 2
  • API Rest
Auteurs :
  • Serigne Mbaye Sy AMAR

Ce MON traite les APIs REST, Une API REST permet la communication entre systèmes via HTTP.

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/ :


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)

  1. Installer les Dépendances MongoDB :

    • Installe Mongoose pour interagir avec une base MongoDB.
    npm install @nestjs/mongoose mongoose
  2. Configurer Mongoose dans le Module Principal :

    • Modifie app.module.ts pour connecter NestJS à MongoDB.
  1. Définir un Schéma Mongoose pour les Posts :
    • Ajoute un fichier post.schema.ts dans le dossier posts.
  1. Lier le Modèle au Module Post :
    • Modifie posts.module.ts pour inclure le schéma.
  1. Adapter le Service pour Utiliser MongoDB :
    • Modifie posts.service.ts pour interagir avec MongoDB via Mongoose.

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

  1. Installer le Module Swagger :

    npm install @nestjs/swagger
  2. Configurer Swagger dans main.ts :

  1. 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.


Comment intégrer des API REST dans React ?

Sources :