Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Implementierung der "GET ALL POSTS"-Route | Entwicklung von REST-API
Backend-Entwicklung mit Node.js und Express.js

book
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:

js
const 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 das validatePostData -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:

js
const 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:

js
// 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 : Wir verwenden fs.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:

js
// 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
}
});

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

js
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
}
});

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 5

Fragen Sie AI

expand
ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

We use cookies to make your experience better!
some-alt