Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Het Bouwen van de GET-Endpoint voor Alle Berichten | REST-API's Bouwen met Node.js en Express.js
Backendontwikkeling met Node.js en Express.js

Het Bouwen van de GET-Endpoint voor Alle Berichten

Veeg om het menu te tonen

We gaan onderzoeken hoe je de "GET ALL POSTS"-route implementeert in het bestand postsRoutes.js. Deze route haalt een lijst op van alle posts uit de gegevensbron (database/posts.json) en stuurt deze als antwoord naar de client.

Vereiste modules en afhankelijkheden importeren

Aan het begin van het bestand importeren we de benodigde modules en afhankelijkheden:

const express = require("express");
const fs = require("fs/promises");
const validatePostData = require("../middlewares/validateData");
  • express: We importeren het Express-framework voor het opzetten van onze routes;
  • fs/promises: Deze module biedt asynchrone bestandsbewerkingen, die we gebruiken om gegevens uit een JSON-bestand te lezen;
  • validatePostData: Hoewel deze middleware niet in deze route wordt gebruikt, importeren we validatePostData, wat nuttig zal zijn voor gegevensvalidatie in latere hoofdstukken.

Initialiseren van een Express Router

We initialiseren een instantie van een Express router, die alle routes in dit bestand zal afhandelen:

const router = express.Router();

Aanmaken van een functie om data te lezen

We definiëren een asynchrone functie genaamd readData om data uit een JSON-bestand te lezen. Deze functie zorgt ervoor dat data correct wordt opgehaald en handelt fouten af:

// 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: We gebruiken fs.readFile om de inhoud van het bestand ./database/posts.json te lezen;
  • JSON.parse: De opgehaalde data uit het bestand wordt geparseerd naar een JavaScript-object;
  • Foutafhandeling: Als er fouten optreden tijdens het lezen of parsen, worden deze opgevangen en wordt de fout doorgegeven.

Definiëren van de "GET ALL POSTS" route

Hier volgt hoe we de "GET ALL POSTS" route binnen de router definiëren:

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

Route-definitie: We geven aan dat deze route HTTP GET-verzoeken naar het rootpad (/) afhandelt.

Route-handler: Binnen de route-handler functie:

  • We roepen de functie readData aan om de lijst met posts uit het JSON-bestand op te halen;
  • Als het ophalen van de data succesvol is, sturen we de opgehaalde data als response met res.send(data);
  • Als er fouten optreden tijdens dit proces, vangen we de fout op, loggen deze in de console voor debugging (console.error(error.message)), en gaan verder.

Volledige code van het postsRoutes.js-bestand in deze stap

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

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 5

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Sectie 4. Hoofdstuk 5
some-alt