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 opslag fra datakilden (database/posts.json) og sender dem som svar til klienten.
Import af nødvendige moduler og afhængigheder
I begyndelsen af filen importeres 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 giver asynkrone filoperationer, som anvendes til at læse data fra en JSON-fil;validatePostData: Selvom denne ikke anvendes i denne rute, importeresvalidatePostData-middleware, som vil være nyttig til datavalidering i senere kapitler.
Initialisering af en Express Router
Vi initialiserer en instans af en Express-router, som håndterer alle ruter defineret i denne fil:
const router = express.Router();
Oprettelse af en funktion til læsning af data
Vi definerer en asynkron funktion ved navn readData til at læse data fra en JSON-fil. Denne funktion sikrer, at data hentes korrekt 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: Vi brugerfs.readFiletil at læse indholdet af filen./database/posts.json;JSON.parse: Data hentet fra filen parses til et JavaScript-objekt;- Fejlhåndtering: Hvis der opstår fejl under læsning eller parsing, opfanges 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: Vi angiver, at denne rute håndterer HTTP GET-anmodninger til rodstien (/).
Rutehåndtering: Inde i rutehåndteringsfunktionen:
- Vi kalder funktionen
readDatafor at hente listen af posts fra JSON-filen; - Hvis data hentes korrekt, sendes de hentede data som svar ved hjælp af
res.send(data); - Hvis der opstår fejl under processen, opfanges fejlen, logges til konsollen til fejlsøgning (
console.error(error.message)), og processen fortsætter.
Komplet kode 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