ROYAUME DU MAROC
Office de la Formation Professionnelle et de la Promotion du Travail Formateur : HAFSA MHAND OUAMMI
Filière : devOFS Niveau : 2ème Année
Module : Créer une application Cloud Native Année de formation: 2023/2024
TP2 – API REST
MONGOOSE ET ENV
Objectifs d'apprentissages :
Utilisation de la bibliothèque Mongoose
Utilisation des variables d’environnement
Utilisation des routes
Les bibliothèques à utiliser:
1. Dotenv
a. Définition:
Dotenv est un module sans dépendance qui charge les variables d'environnement d'un .env fichier
dans process.env.
b. Installation:
npm install dotenv --save
c. Utilisation:
Créez un .env fichier à la racine de votre projet :
HOST = localhost
DATABASE = tpDb
PORT = 5432
import and configure dotenv:
require('dotenv').config()
const host = process.env.HOST
2. Cors
a. Définition :
CORS est un package node.js permettant de fournir un middleware Connect / Express qui peut être
utilisé pour activer CORS avec diverses options.
CORS (Cross-origin resource sharing) est un mécanisme d'intégration d'applications . CORS définit un
moyen permettant aux applications Web client chargées dans un domaine d'interagir avec les
ressources d'un domaine différent.
ROYAUME DU MAROC
Office de la Formation Professionnelle et de la Promotion du Travail Formateur : HAFSA MHAND OUAMMI
Filière : devOFS Niveau : 2ème Année
Module : Créer une application Cloud Native Année de formation: 2023/2024
b. Installation:
npm install cors
c. Utilisation:
var app = express()
var cors = require('cors')
app.use(cors())
3. nodemon
a. Définition:
nodemon est un outil qui permet de développer des applications basées sur Node.js en redémarrant
automatiquement l'application de nœud lorsque des modifications de fichiers dans le répertoire
sont détectées.
nodemon ne nécessite aucune modification supplémentaire de votre code ou de votre méthode de
développement. nodemon est un wrapper de remplacement pour node. Pour utiliser nodemon,
remplacez le mot nodesur la ligne de commande lors de l'exécution de votre script.
b. Installation:
npm install -g nodemon
c. Utilisation:
nodemon [your node app]
Structuration du TP :
Utilisation des fichiers de routes :
Créer un dossier routes dans lequel on va déclarer les routes .
Dans le fichier technologies.js on va inclure :
- Le module Express et aussi
- La fonction express.Router() pour créer un nouvel objet router.
Et ensuite on spécifie les endpoints.
const express=require('express')
const router=express.Router()
ROYAUME DU MAROC
Office de la Formation Professionnelle et de la Promotion du Travail Formateur : HAFSA MHAND OUAMMI
Filière : devOFS Niveau : 2ème Année
Module : Créer une application Cloud Native Année de formation: 2023/2024
router.get("/",(req,res)=>{
res.send("Technology route is displaying data")
})
module.exports=router;
Dans le fichier app.js :
const technologiesRoute = require('./routes/technologies')
app.use("/technologies",technologiesRoute)
pour tester la route :
Travail à réaliser :
1. Créer un dossier avec le nom tp2-cloudNative
2. Lancer la commande de création de fichier package.json, en prenant en considération que le
fichier main sera nommer server.js
3. Installer les packages suivants :
Express
Mongoose
Nodemon
Cors
Dotenv
4. Structurer le dossier de votre projet de la façon suivante :
ROYAUME DU MAROC
Office de la Formation Professionnelle et de la Promotion du Travail Formateur : HAFSA MHAND OUAMMI
Filière : devOFS Niveau : 2ème Année
Module : Créer une application Cloud Native Année de formation: 2023/2024
5. Dans le fichier. env, déclarer les variables d'environnement suivante :
Nom de variable Description
PORT Port de l’application
URL_MONGOOSE Chaine de connexion vers MongoDB
DBNAME Le nom de la base de données
6.Dans le fichier server.js :
Récupérer les variables d'environnement
Permettre l'analyse des requêtes JSON.
Connexion à la base de données Mongodb.
Les requêtes qui commence par /chefs seront rediriges vers le fichier chef dans le dossier routes.
Les requêtes qui commence par /recette seront rediriges vers le fichier recette dans le dossier
routes.
Les requêtes qui commence par /restaurant seront rediriges vers le fichier restaurant dans le
dossier routes.
Démarrer le serveur (valeur du port déjà défini dans le fichier .env).
7. Dans le fichier ChefsModel :
Définir le schéma qui représente un document de la collection Chefs.
Exporter par défaut le modèle de ce schéma.
8.Dans le fichier RecettesModel :
Définir le schéma qui représente un document de la collection Recette.
Exporter par défaut le modèle de ce schéma.
9.Dans le fichier RestaurantsModel :
Définir le schéma qui représente un document de la collection Restaurant.
Exporter par défaut le modèle de ce schéma.
10.Dans le fichier chef.js, créer les routes suivantes :
Chemin Méthode Description
/all GET Retourne la liste de tous les chefs.
/names GET Retourne les noms des chefs
/recettes GET Retourne le nombre de recettes par chef (retourne le nom du
chef et le nombre de recettes)
/add POST Ajout d'un chef (passe dans le corps de la requête)
/update/:name PUT Modifie les informations d'un chef en se basant sur son nom.
/delete/:name DELETE Supprime un chef
ROYAUME DU MAROC
Office de la Formation Professionnelle et de la Promotion du Travail Formateur : HAFSA MHAND OUAMMI
Filière : devOFS Niveau : 2ème Année
Module : Créer une application Cloud Native Année de formation: 2023/2024
11.Dans le fichier recette.js, créer les routes suivantes :
Chemin Méthode Description
/all GET Retourne la liste de tous les recettes.
/names GET Retourne les noms des recettes
/add POST Ajout d'une recette (passe dans le corps de la requête)
/update/:name PUT Modifie les informations d'une recette en se basant sur son
nom.
/delete/:name DELETE Supprime une recette
12.Dans le fichier restaurant.js, créer les routes suivantes :
Chemin Méthode Description
/all GET Retourne la liste de tous les restaurants.
/chefs/:restaurantname GET Retourne toutes les informations sur les chefs d'un
restaurant passe en paramètre.
/recettes/:restaurantname GET Retourne toutes les informations sur les recettes d'un
restaurant passe en paramètre.
/listCategorie/:category GET Retourne la liste de tous les restaurants d'une catégorie
passe en paramètre.
/list GET
/:annee1/:annee2 GET Retourne les restaurants ouvert entre les deux
paramètres annee1 et annee2
/add POST Ajout d'un restaurant (passe dans le corps de la
requête)
/update/:name PUT Modifie les informations d'un restaurant en se basant
sur son nom.
/delete/:name DELETE Supprime un restaurant
13.Créer une application React pour consommer l'API que vous avez créé.