Het Bouwen van de GET-Endpoint voor Alle Berichten
Veeg om het menu te tonen
We gaan onderzoeken hoe je de "GET ALL POSTS"-route implementeert in het bestand postsRoutes.js. Deze route haalt een lijst op van alle posts uit de gegevensbron (database/posts.json) en stuurt deze als antwoord naar de client.
Vereiste modules en afhankelijkheden importeren
Aan het begin van het bestand importeren we de benodigde modules en afhankelijkheden:
const express = require("express");
const fs = require("fs/promises");
const validatePostData = require("../middlewares/validateData");
express: We importeren het Express-framework voor het opzetten van onze routes;fs/promises: Deze module biedt asynchrone bestandsbewerkingen, die we gebruiken om gegevens uit een JSON-bestand te lezen;validatePostData: Hoewel deze middleware niet in deze route wordt gebruikt, importeren wevalidatePostData, wat nuttig zal zijn voor gegevensvalidatie in latere hoofdstukken.
Initialiseren van een Express Router
We initialiseren een instantie van een Express router, die alle routes in dit bestand zal afhandelen:
const router = express.Router();
Aanmaken van een functie om data te lezen
We definiëren een asynchrone functie genaamd readData om data uit een JSON-bestand te lezen. Deze functie zorgt ervoor dat data correct wordt opgehaald en handelt fouten af:
// 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: We gebruikenfs.readFileom de inhoud van het bestand./database/posts.jsonte lezen;JSON.parse: De opgehaalde data uit het bestand wordt geparseerd naar een JavaScript-object;- Foutafhandeling: Als er fouten optreden tijdens het lezen of parsen, worden deze opgevangen en wordt de fout doorgegeven.
Definiëren van de "GET ALL POSTS" route
Hier volgt hoe we de "GET ALL POSTS" route binnen de router definiëren:
// 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
}
});
Route-definitie: We geven aan dat deze route HTTP GET-verzoeken naar het rootpad (/) afhandelt.
Route-handler: Binnen de route-handler functie:
- We roepen de functie
readDataaan om de lijst met posts uit het JSON-bestand op te halen; - Als het ophalen van de data succesvol is, sturen we de opgehaalde data als response met
res.send(data); - Als er fouten optreden tijdens dit proces, vangen we de fout op, loggen deze in de console voor debugging (
console.error(error.message)), en gaan verder.
Volledige code van het postsRoutes.js-bestand in deze stap
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
}
});
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.