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

bookOpbygning af GET-endepunktet for Alle Opslag

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

Import af nødvendige moduler og afhængigheder

I begyndelsen af filen importeres 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 giver asynkrone filoperationer, som anvendes til at læse data fra en JSON-fil;
  • validatePostData: Selvom denne ikke anvendes i denne rute, importeres validatePostData-middleware, som vil være nyttig til datavalidering i senere kapitler.

Initialisering af en Express Router

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

const router = express.Router();

Oprettelse af en funktion til læsning af data

Vi definerer en asynkron funktion ved navn readData til at læse data fra en JSON-fil. Denne funktion sikrer, at data hentes korrekt 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: Vi bruger fs.readFile til at læse indholdet af filen ./database/posts.json;
  • JSON.parse: Data hentet fra filen parses til et JavaScript-objekt;
  • Fejlhåndtering: Hvis der opstår fejl under læsning eller parsing, opfanges 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: Vi angiver, at denne rute håndterer HTTP GET-anmodninger til rodstien (/).

Rutehåndtering: Inde i rutehåndteringsfunktionen:

  • Vi kalder funktionen readData for at hente listen af posts fra JSON-filen;
  • Hvis data hentes korrekt, sendes de hentede data som svar ved hjælp af res.send(data);
  • Hvis der opstår fejl under processen, opfanges fejlen, logges til konsollen til fejlsøgning (console.error(error.message)), og processen fortsætter.

Komplet kode 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

bookOpbygning 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 opslag fra datakilden (database/posts.json) og sender dem som svar til klienten.

Import af nødvendige moduler og afhængigheder

I begyndelsen af filen importeres 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 giver asynkrone filoperationer, som anvendes til at læse data fra en JSON-fil;
  • validatePostData: Selvom denne ikke anvendes i denne rute, importeres validatePostData-middleware, som vil være nyttig til datavalidering i senere kapitler.

Initialisering af en Express Router

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

const router = express.Router();

Oprettelse af en funktion til læsning af data

Vi definerer en asynkron funktion ved navn readData til at læse data fra en JSON-fil. Denne funktion sikrer, at data hentes korrekt 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: Vi bruger fs.readFile til at læse indholdet af filen ./database/posts.json;
  • JSON.parse: Data hentet fra filen parses til et JavaScript-objekt;
  • Fejlhåndtering: Hvis der opstår fejl under læsning eller parsing, opfanges 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: Vi angiver, at denne rute håndterer HTTP GET-anmodninger til rodstien (/).

Rutehåndtering: Inde i rutehåndteringsfunktionen:

  • Vi kalder funktionen readData for at hente listen af posts fra JSON-filen;
  • Hvis data hentes korrekt, sendes de hentede data som svar ved hjælp af res.send(data);
  • Hvis der opstår fejl under processen, opfanges fejlen, logges til konsollen til fejlsøgning (console.error(error.message)), og processen fortsætter.

Komplet kode 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
some-alt