Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Opbygning af GET-endepunktet for alle opslag | Opbygning af REST API'er med Node.js og Express.js
Backend-Udvikling med Node.js og Express.js

Opbygning af GET-endepunktet for alle opslag

Stryg for at vise menuen

Vi vil undersøge, hvordan man implementerer "GET ALL POSTS"-ruten i filen postsRoutes.js. Denne rute henter en liste over alle posts fra datakilden (database/posts.json) og sender dem som svar til klienten.

Import af nødvendige moduler og afhængigheder

I begyndelsen af filen importerer vi de nødvendige moduler og afhængigheder:

const express = require("express");
const fs = require("fs/promises");
const validatePostData = require("../middlewares/validateData");
  • express: Import af Express-frameworket til opbygning af ruter;
  • fs/promises: Dette modul tilbyder asynkrone filoperationer, som bruges til at læse data fra en JSON-fil;
  • validatePostData: Selvom det ikke bruges i denne rute, importeres validatePostData-middleware, som vil være nyttig til datavalidering i senere kapitler.

Initialisering af en Express Router

Initialisering af en instans af en Express-router, som håndterer alle ruter defineret i denne fil:

const router = express.Router();

Oprettelse af en funktion til at læse data

Definition af en asynkron funktion ved navn readData til at læse data fra en JSON-fil. Funktionen sikrer korrekt hentning af data og håndterer fejl:

// 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: Brug af fs.readFile til at læse indholdet af filen ./database/posts.json;
  • JSON.parse: De hentede data fra filen parses til et JavaScript-objekt;
  • Fejlhåndtering: Hvis der opstår fejl under læsning eller parsing, fanges de, og fejlen kastes.

Definition af "GET ALL POSTS"-ruten

Sådan defineres "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-definition: Angiver, at denne rute håndterer HTTP GET-anmodninger til rodstien (/).

Rute-handler: Inde i rute-handler-funktionen:

  • Kald af funktionen readData for at hente listen af posts fra JSON-filen;
  • Hvis datahentningen lykkes, sendes de hentede data som svar med res.send(data);
  • Hvis der opstår fejl under processen, fanges fejlen, logges til konsollen for fejlsøgning (console.error(error.message)), og processen fortsætter.

Fuldt kodeeksempel for postsRoutes.js-filen på dette trin

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

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 5

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Sektion 4. Kapitel 5
some-alt