Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Erstellung des GET-Endpunkts für Alle Beiträge | Erstellung von REST-APIs mit Node.js und Express.js
Backend-Entwicklung mit Node.js und Express.js

Erstellung des GET-Endpunkts für Alle Beiträge

Swipe um das Menü anzuzeigen

In diesem Abschnitt wird erläutert, wie die Route "GET ALL POSTS" in der Datei postsRoutes.js implementiert wird. Diese Route ruft eine Liste aller Beiträge aus der Datenquelle (database/posts.json) ab und sendet sie als Antwort an den Client.

Import der benötigten Module und Abhängigkeiten

Am Anfang der Datei werden die erforderlichen Module und Abhängigkeiten importiert:

const express = require("express");
const fs = require("fs/promises");
const validatePostData = require("../middlewares/validateData");
  • express: Import des Express-Frameworks zur Erstellung der Routen;
  • fs/promises: Dieses Modul stellt asynchrone Dateioperationen bereit, die zum Lesen von Daten aus einer JSON-Datei verwendet werden;
  • validatePostData: Obwohl in dieser Route nicht verwendet, wird das Middleware validatePostData importiert, das für die Datenvalidierung in späteren Kapiteln nützlich sein wird.

Initialisierung eines Express Routers

Initialisierung einer Instanz eines Express Routers zur Verwaltung aller in dieser Datei definierten Routen:

const router = express.Router();

Erstellen einer Funktion zum Lesen von Daten

Definition einer asynchronen Funktion mit dem Namen readData zum Lesen von Daten aus einer JSON-Datei. Diese Funktion stellt sicher, dass die Daten korrekt abgerufen werden und behandelt Fehler:

// 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: Verwendung von fs.readFile zum Lesen des Inhalts der Datei ./database/posts.json;
  • JSON.parse: Die aus der Datei abgerufenen Daten werden in ein JavaScript-Objekt umgewandelt;
  • Fehlerbehandlung: Bei Fehlern während des Lese- oder Parsing-Vorgangs werden diese abgefangen und der Fehler wird ausgelöst.

Definition der "GET ALL POSTS"-Route

So wird die "GET ALL POSTS"-Route im Router definiert:

// 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: Diese Route verarbeitet HTTP-GET-Anfragen an den Root-Pfad (/).

Routen-Handler: Innerhalb der Handler-Funktion:

  • Aufruf der Funktion readData zum Abrufen der Liste der Posts aus der JSON-Datei;
  • Bei erfolgreichem Datenabruf wird die abgerufene Datenliste als Antwort mit res.send(data) gesendet;
  • Bei Fehlern während dieses Prozesses wird der Fehler abgefangen, zur Fehlersuche in der Konsole protokolliert (console.error(error.message)) und der Vorgang fortgesetzt.

Vollständiger Code der Datei postsRoutes.js in diesem Schritt

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

Fragen Sie AI

ChatGPT

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

Abschnitt 4. Kapitel 5
some-alt