Bygga GET-Endpointen för Alla Inlägg
Svep för att visa menyn
Vi kommer att undersöka hur man implementerar "GET ALL POSTS"-rutten i filen postsRoutes.js. Denna rutt hämtar en lista över alla inlägg från datakällan (database/posts.json) och skickar dem som svar till klienten.
Importera nödvändiga moduler och beroenden
I början av filen importeras de nödvändiga modulerna och beroendena:
const express = require("express");
const fs = require("fs/promises");
const validatePostData = require("../middlewares/validateData");
express: Import av Express-ramverket för att bygga våra rutter;fs/promises: Denna modul tillhandahåller asynkrona filoperationer, vilka används för att läsa data från en JSON-fil;validatePostData: Även om den inte används i denna rutt importerasvalidatePostData-middleware, vilket kommer att vara användbart för datavalidering i senare kapitel.
Initiering av en Express Router
En instans av en Express-router initieras, vilken hanterar alla rutter som definieras i denna fil:
const router = express.Router();
Skapa en funktion för att läsa data
En asynkron funktion med namnet readData definieras för att läsa data från en JSON-fil. Denna funktion säkerställer att data hämtas korrekt och hanterar fel:
// 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:fs.readFileanvänds för att läsa innehållet i filen./database/posts.json;JSON.parse: Den data som hämtas från filen parsas till ett JavaScript-objekt;- Felhantering: Om fel uppstår under läsning eller tolkning fångas dessa och felet kastas.
Definiera rutten "GET ALL POSTS"
Så här definieras rutten "GET ALL POSTS" i routern:
// 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
}
});
Ruttdefinition: Denna rutt hanterar HTTP GET-förfrågningar till rotvägen (/).
Rutthanterare: Inuti rutthanterarens funktion:
readDataanropas för att hämta listan med inlägg från JSON-filen;- Om datahämtningen lyckas skickas den hämtade datan som svar med
res.send(data); - Om fel uppstår under processen fångas felet, loggas till konsolen för felsökning (
console.error(error.message)) och processen fortsätter.
Komplett kod för filen postsRoutes.js vid detta steg
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
}
});
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal