Opbygning af GET-endepunktet for alle opslag
Stryg for at vise menuen
Vi vil undersøge, hvordan man implementerer "GET ALL POSTS"-ruten i filen postsRoutes.js. Denne rute henter en liste over alle posts fra datakilden (database/posts.json) og sender dem som svar til klienten.
Import af nødvendige moduler og afhængigheder
I begyndelsen af filen importerer vi de nødvendige moduler og afhængigheder:
const express = require("express");
const fs = require("fs/promises");
const validatePostData = require("../middlewares/validateData");
express: Import af Express-frameworket til opbygning af ruter;fs/promises: Dette modul tilbyder asynkrone filoperationer, som bruges til at læse data fra en JSON-fil;validatePostData: Selvom det ikke bruges i denne rute, importeresvalidatePostData-middleware, som vil være nyttig til datavalidering i senere kapitler.
Initialisering af en Express Router
Initialisering af en instans af en Express-router, som håndterer alle ruter defineret i denne fil:
const router = express.Router();
Oprettelse af en funktion til at læse data
Definition af en asynkron funktion ved navn readData til at læse data fra en JSON-fil. Funktionen sikrer korrekt hentning af data og håndterer fejl:
// 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: Brug affs.readFiletil at læse indholdet af filen./database/posts.json;JSON.parse: De hentede data fra filen parses til et JavaScript-objekt;- Fejlhåndtering: Hvis der opstår fejl under læsning eller parsing, fanges de, og fejlen kastes.
Definition af "GET ALL POSTS"-ruten
Sådan defineres "GET ALL POSTS"-ruten i routeren:
// 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
}
});
Rute-definition: Angiver, at denne rute håndterer HTTP GET-anmodninger til rodstien (/).
Rute-handler: Inde i rute-handler-funktionen:
- Kald af funktionen
readDatafor at hente listen af posts fra JSON-filen; - Hvis datahentningen lykkes, sendes de hentede data som svar med
res.send(data); - Hvis der opstår fejl under processen, fanges fejlen, logges til konsollen for fejlsøgning (
console.error(error.message)), og processen fortsætter.
Fuldt kodeeksempel for postsRoutes.js-filen på dette trin
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
}
});
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat