Contenu du cours
Développement Backend Avec Node.js et Express.js
Développement Backend Avec Node.js et Express.js
Implémentation de la Route "GET ALL POSTS"
Nous allons explorer comment implémenter la route "GET ALL POSTS" dans le fichier postsRoutes.js
. Cette route récupère une liste de tous les articles de la source de données (database/posts.json
) et les envoie en réponse au client.
Importation des Modules et Dépendances Nécessaires
Au début du fichier, nous importons les modules et dépendances nécessaires :
const express = require("express");
const fs = require("fs/promises");
const validatePostData = require("../middlewares/validateData");
express
: Nous importons le framework Express pour construire nos routes ;fs/promises
: Ce module fournit des opérations de fichiers asynchrones, que nous utiliserons pour lire les données d'un fichier JSON ;validatePostData
: Bien que non utilisé dans cette route, nous importons le middlewarevalidatePostData
, qui sera utile pour la validation des données dans les chapitres ultérieurs.
Initialisation d'un routeur Express
Nous initialisons une instance d'un routeur Express, qui gérera toutes les routes définies dans ce fichier :
const router = express.Router();
Création d'une fonction pour lire les données
Nous définissons une fonction asynchrone nommée readData pour lire les données d'un fichier JSON. Cette fonction garantit que les données sont correctement récupérées et gère les erreurs :
// Function to read data from the JSON file
async function readData() {
try {
// Read the contents of the `posts.json` file
const data = await fs.readFile("./database/posts.json");
// Parse the JSON data into a JavaScript object
return JSON.parse(data);
} catch (error) {
// If an error occurs during reading or parsing, throw the error
throw error;
}
}
fs.readFile
: Nous utilisonsfs.readFile
pour lire le contenu du fichier./database/posts.json
;JSON.parse
: Les données récupérées du fichier sont analysées en un objet JavaScript ;- Gestion des erreurs : Si des erreurs surviennent lors du processus de lecture ou d'analyse, elles sont capturées, et l'erreur est lancée.
Définition de la route "GET ALL POSTS"
Voici comment nous définissons la route "GET ALL POSTS" dans le routeur :
// GET ALL POSTS
router.get("/", async (req, res, next) => {
try {
// Call the `readData` function to retrieve the list of posts
const data = await readData();
// Send the retrieved data as the response
res.status(200).send(data);
} catch (error) {
// If an error occurs during data retrieval or sending the response
console.error(error.message); // Log the error to the console for debugging
}
});
Définition de la route : Nous spécifions que cette route gère les requêtes HTTP GET vers le chemin racine (/
).
Gestionnaire de route : À l'intérieur de la fonction du gestionnaire de route :
- Nous appelons la fonction
readData
pour récupérer la liste des posts du fichier JSON ; - Si la récupération des données est réussie, nous envoyons les données récupérées comme réponse en utilisant
res.send(data)
; - Si des erreurs surviennent pendant ce processus, nous capturons l'erreur, l'enregistrons dans la console pour le débogage (
console.error(error.message)
), et continuons.
Code complet du fichier postsRoutes.js à cette étape
const express = require("express");
const fs = require("fs/promises");
const validatePostData = require("../middlewares/validateData");
const router = express.Router();
// Function to read data from the JSON file
async function readData() {
try {
// Read the contents of the `posts.json` file
const data = await fs.readFile("./database/posts.json");
// Parse the JSON data into a JavaScript object
return JSON.parse(data);
} catch (error) {
// If an error occurs during reading or parsing, throw the error
throw error;
}
}
// GET ALL POSTS
router.get("/", async (req, res, next) => {
try {
// Call the `readData` function to retrieve the list of posts
const data = await readData();
// Send the retrieved data as the response
res.status(200).send(data);
} catch (error) {
// If an error occurs during data retrieval or sending the response
console.error(error.message); // Log the error to the console for debugging
}
});
Merci pour vos commentaires !