Implementierung der "GET ALL POSTS"-Route
Wir werden erkunden, wie man die Route "GET ALL POSTS" in der Datei postsRoutes.js
implementiert. Diese Route ruft eine Liste aller Beiträge aus der Datenquelle (database/posts.json
) ab und sendet sie als Antwort an den Client.
Importieren der erforderlichen Module und Abhängigkeiten
Am Anfang der Datei importieren wir die notwendigen Module und Abhängigkeiten:
js9123const express = require("express");const fs = require("fs/promises");const validatePostData = require("../middlewares/validateData");
express
: Wir importieren das Express-Framework, um unsere Routen zu erstellen;fs/promises
: Dieses Modul bietet asynchrone Dateioperationen, die wir verwenden, um Daten aus einer JSON-Datei zu lesen;validatePostData
: Obwohl in dieser Route nicht verwendet, importieren wir dasvalidatePostData
-Middleware, das in späteren Kapiteln für die Datenvalidierung nützlich sein wird.
Initialisieren eines Express Routers
Wir initialisieren eine Instanz eines Express Routers, der alle in dieser Datei definierten Routen verwalten wird:
jsconst router = express.Router();
Erstellen einer Funktion zum Lesen von Daten
Wir definieren eine asynchrone Funktion namens readData, um Daten aus einer JSON-Datei zu lesen. Diese Funktion stellt sicher, dass die Daten ordnungsgemäß abgerufen werden und behandelt Fehler:
js99123456789101112// Function to read data from the JSON fileasync function readData() {try {// Read the contents of the `posts.json` fileconst data = await fs.readFile("./database/posts.json");// Parse the JSON data into a JavaScript objectreturn JSON.parse(data);} catch (error) {// If an error occurs during reading or parsing, throw the errorthrow error;}}
fs.readFile
: Wir verwendenfs.readFile
, um den Inhalt der./database/posts.json
Datei zu lesen;JSON.parse
: Die aus der Datei abgerufenen Daten werden in ein JavaScript-Objekt geparst;Fehlerbehandlung: Wenn während des Lese- oder Parsvorgangs Fehler auftreten, werden sie abgefangen und der Fehler wird ausgelöst.
Definieren der "GET ALL POSTS" Route
So definieren wir die "GET ALL POSTS" Route innerhalb des Routers:
js99123456789101112// GET ALL POSTSrouter.get("/", async (req, res, next) => {try {// Call the `readData` function to retrieve the list of postsconst data = await readData();// Send the retrieved data as the responseres.status(200).send(data);} catch (error) {// If an error occurs during data retrieval or sending the responseconsole.error(error.message); // Log the error to the console for debugging}});
Routendefinition: Wir geben an, dass diese Route HTTP GET-Anfragen an den Stammweg (/
) behandelt.
Routen-Handler: Innerhalb der Routen-Handler-Funktion:
Wir rufen die
readData
Funktion auf, um die Liste der Beiträge aus der JSON-Datei abzurufen;Wenn das Abrufen der Daten erfolgreich ist, senden wir die abgerufenen Daten als Antwort mit
res.send(data)
;Wenn während dieses Prozesses Fehler auftreten, fangen wir den Fehler ab, protokollieren ihn zur Fehlerbehebung in der Konsole (
console.error(error.message)
) und fahren fort.
Vollständiger Code der Datei postsRoutes.js in diesem Schritt
js9912345678910111213141516171819202122232425262728293031const express = require("express");const fs = require("fs/promises");const validatePostData = require("../middlewares/validateData");const router = express.Router();// Function to read data from the JSON fileasync function readData() {try {// Read the contents of the `posts.json` fileconst data = await fs.readFile("./database/posts.json");// Parse the JSON data into a JavaScript objectreturn JSON.parse(data);} catch (error) {// If an error occurs during reading or parsing, throw the errorthrow error;}}// GET ALL POSTSrouter.get("/", async (req, res, next) => {try {// Call the `readData` function to retrieve the list of postsconst data = await readData();// Send the retrieved data as the responseres.status(200).send(data);} catch (error) {// If an error occurs during data retrieval or sending the responseconsole.error(error.message); // Log the error to the console for debugging}});
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen