Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Bygge GET-endepunktet for Alle Innlegg | Bygge REST-API-er med Node.js og Express.js
Backend-Utvikling med Node.js og Express.js

bookBygge GET-endepunktet for Alle Innlegg

Vi skal se på hvordan man implementerer "GET ALL POSTS"-ruten i postsRoutes.js-filen. Denne ruten henter en liste over alle innlegg fra datakilden (database/posts.json) og sender dem som svar til klienten.

Import av nødvendige moduler og avhengigheter

I starten av filen importerer vi de nødvendige modulene og avhengighetene:

const express = require("express");
const fs = require("fs/promises");
const validatePostData = require("../middlewares/validateData");
  • express: Import av Express-rammeverket for å bygge rutene våre;
  • fs/promises: Dette modulen gir asynkrone filoperasjoner, som vi skal bruke for å lese data fra en JSON-fil;
  • validatePostData: Selv om denne ikke brukes i denne ruten, importerer vi validatePostData-mellomvaren, som vil være nyttig for datavalidering i senere kapitler.

Initialisering av en Express Router

Vi initialiserer en instans av en Express-router, som håndterer alle rutene definert i denne filen:

const router = express.Router();

Opprettelse av en funksjon for å lese data

Vi definerer en asynkron funksjon kalt readData for å lese data fra en JSON-fil. Denne funksjonen sørger for at data hentes korrekt og håndterer feil:

// 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 bruker fs.readFile for å lese innholdet i ./database/posts.json-filen;
  • JSON.parse: Dataen som hentes fra filen blir tolket som et JavaScript-objekt;
  • Feilhåndtering: Hvis det oppstår feil under lesing eller parsing, blir feilen fanget opp og kastet videre.

Definering av "GET ALL POSTS"-ruten

Slik definerer vi "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-definisjon: Vi spesifiserer at denne ruten håndterer HTTP GET-forespørsler til rotstien (/).

Rutehåndtering: Inne i rutehåndteringsfunksjonen:

  • Vi kaller readData-funksjonen for å hente listen over innlegg fra JSON-filen;
  • Hvis datahentingen er vellykket, sendes de hentede dataene som respons med res.send(data);
  • Hvis det oppstår feil i denne prosessen, fanges feilen opp, logges til konsollen for feilsøking (console.error(error.message)), og prosessen fortsetter.

Fullstendig kode for filen postsRoutes.js på dette steget

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

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 5

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Awesome!

Completion rate improved to 2.56

bookBygge GET-endepunktet for Alle Innlegg

Sveip for å vise menyen

Vi skal se på hvordan man implementerer "GET ALL POSTS"-ruten i postsRoutes.js-filen. Denne ruten henter en liste over alle innlegg fra datakilden (database/posts.json) og sender dem som svar til klienten.

Import av nødvendige moduler og avhengigheter

I starten av filen importerer vi de nødvendige modulene og avhengighetene:

const express = require("express");
const fs = require("fs/promises");
const validatePostData = require("../middlewares/validateData");
  • express: Import av Express-rammeverket for å bygge rutene våre;
  • fs/promises: Dette modulen gir asynkrone filoperasjoner, som vi skal bruke for å lese data fra en JSON-fil;
  • validatePostData: Selv om denne ikke brukes i denne ruten, importerer vi validatePostData-mellomvaren, som vil være nyttig for datavalidering i senere kapitler.

Initialisering av en Express Router

Vi initialiserer en instans av en Express-router, som håndterer alle rutene definert i denne filen:

const router = express.Router();

Opprettelse av en funksjon for å lese data

Vi definerer en asynkron funksjon kalt readData for å lese data fra en JSON-fil. Denne funksjonen sørger for at data hentes korrekt og håndterer feil:

// 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 bruker fs.readFile for å lese innholdet i ./database/posts.json-filen;
  • JSON.parse: Dataen som hentes fra filen blir tolket som et JavaScript-objekt;
  • Feilhåndtering: Hvis det oppstår feil under lesing eller parsing, blir feilen fanget opp og kastet videre.

Definering av "GET ALL POSTS"-ruten

Slik definerer vi "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-definisjon: Vi spesifiserer at denne ruten håndterer HTTP GET-forespørsler til rotstien (/).

Rutehåndtering: Inne i rutehåndteringsfunksjonen:

  • Vi kaller readData-funksjonen for å hente listen over innlegg fra JSON-filen;
  • Hvis datahentingen er vellykket, sendes de hentede dataene som respons med res.send(data);
  • Hvis det oppstår feil i denne prosessen, fanges feilen opp, logges til konsollen for feilsøking (console.error(error.message)), og prosessen fortsetter.

Fullstendig kode for filen postsRoutes.js på dette steget

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

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 5
some-alt