Bygge GET-endepunktet for Alle Innlegg
Vi skal se på hvordan man implementerer "GET ALL POSTS"-ruten i postsRoutes.js-filen. Denne ruten henter en liste over alle innlegg fra datakilden (database/posts.json) og sender dem som svar til klienten.
Import av nødvendige moduler og avhengigheter
I starten av filen importerer vi de nødvendige modulene og avhengighetene:
const express = require("express");
const fs = require("fs/promises");
const validatePostData = require("../middlewares/validateData");
express: Import av Express-rammeverket for å bygge rutene våre;fs/promises: Dette modulen gir asynkrone filoperasjoner, som vi skal bruke for å lese data fra en JSON-fil;validatePostData: Selv om denne ikke brukes i denne ruten, importerer vivalidatePostData-mellomvaren, som vil være nyttig for datavalidering i senere kapitler.
Initialisering av en Express Router
Vi initialiserer en instans av en Express-router, som håndterer alle rutene definert i denne filen:
const router = express.Router();
Opprettelse av en funksjon for å lese data
Vi definerer en asynkron funksjon kalt readData for å lese data fra en JSON-fil. Denne funksjonen sørger for at data hentes korrekt og håndterer feil:
// 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 brukerfs.readFilefor å lese innholdet i./database/posts.json-filen;JSON.parse: Dataen som hentes fra filen blir tolket som et JavaScript-objekt;- Feilhåndtering: Hvis det oppstår feil under lesing eller parsing, blir feilen fanget opp og kastet videre.
Definering av "GET ALL POSTS"-ruten
Slik definerer vi "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-definisjon: Vi spesifiserer at denne ruten håndterer HTTP GET-forespørsler til rotstien (/).
Rutehåndtering: Inne i rutehåndteringsfunksjonen:
- Vi kaller
readData-funksjonen for å hente listen over innlegg fra JSON-filen; - Hvis datahentingen er vellykket, sendes de hentede dataene som respons med
res.send(data); - Hvis det oppstår feil i denne prosessen, fanges feilen opp, logges til konsollen for feilsøking (
console.error(error.message)), og prosessen fortsetter.
Fullstendig kode for filen postsRoutes.js på dette steget
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
}
});
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Awesome!
Completion rate improved to 2.56
Bygge GET-endepunktet for Alle Innlegg
Sveip for å vise menyen
Vi skal se på hvordan man implementerer "GET ALL POSTS"-ruten i postsRoutes.js-filen. Denne ruten henter en liste over alle innlegg fra datakilden (database/posts.json) og sender dem som svar til klienten.
Import av nødvendige moduler og avhengigheter
I starten av filen importerer vi de nødvendige modulene og avhengighetene:
const express = require("express");
const fs = require("fs/promises");
const validatePostData = require("../middlewares/validateData");
express: Import av Express-rammeverket for å bygge rutene våre;fs/promises: Dette modulen gir asynkrone filoperasjoner, som vi skal bruke for å lese data fra en JSON-fil;validatePostData: Selv om denne ikke brukes i denne ruten, importerer vivalidatePostData-mellomvaren, som vil være nyttig for datavalidering i senere kapitler.
Initialisering av en Express Router
Vi initialiserer en instans av en Express-router, som håndterer alle rutene definert i denne filen:
const router = express.Router();
Opprettelse av en funksjon for å lese data
Vi definerer en asynkron funksjon kalt readData for å lese data fra en JSON-fil. Denne funksjonen sørger for at data hentes korrekt og håndterer feil:
// 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 brukerfs.readFilefor å lese innholdet i./database/posts.json-filen;JSON.parse: Dataen som hentes fra filen blir tolket som et JavaScript-objekt;- Feilhåndtering: Hvis det oppstår feil under lesing eller parsing, blir feilen fanget opp og kastet videre.
Definering av "GET ALL POSTS"-ruten
Slik definerer vi "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-definisjon: Vi spesifiserer at denne ruten håndterer HTTP GET-forespørsler til rotstien (/).
Rutehåndtering: Inne i rutehåndteringsfunksjonen:
- Vi kaller
readData-funksjonen for å hente listen over innlegg fra JSON-filen; - Hvis datahentingen er vellykket, sendes de hentede dataene som respons med
res.send(data); - Hvis det oppstår feil i denne prosessen, fanges feilen opp, logges til konsollen for feilsøking (
console.error(error.message)), og prosessen fortsetter.
Fullstendig kode for filen postsRoutes.js på dette steget
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
}
});
Takk for tilbakemeldingene dine!