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

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?

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