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

Suggested prompts:

Can you explain how error handling works in this route?

What would be the next step to add more routes, like "GET POST BY ID"?

How does the readData function handle missing or corrupted JSON files?

Awesome!

Completion rate improved to 2.56

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