Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Bygga GET-Endpointen för Alla Inlägg | Bygga REST API:er med Node.js och Express.js
Backendutveckling med Node.js och Express.js

bookBygga GET-Endpointen för Alla Inlägg

Vi kommer att undersöka hur man implementerar "GET ALL POSTS"-rutten i filen postsRoutes.js. Denna rutt hämtar en lista över alla inlägg från datakällan (database/posts.json) och skickar dem som svar till klienten.

Importera nödvändiga moduler och beroenden

I början av filen importeras de nödvändiga modulerna och beroendena:

const express = require("express");
const fs = require("fs/promises");
const validatePostData = require("../middlewares/validateData");
  • express: Import av Express-ramverket för att bygga våra rutter;
  • fs/promises: Denna modul tillhandahåller asynkrona filoperationer, vilka används för att läsa data från en JSON-fil;
  • validatePostData: Även om den inte används i denna rutt importeras validatePostData-middleware, vilket kommer att vara användbart för datavalidering i senare kapitel.

Initiering av en Express Router

En instans av en Express-router initieras, vilken hanterar alla rutter som definieras i denna fil:

const router = express.Router();

Skapa en funktion för att läsa data

En asynkron funktion med namnet readData definieras för att läsa data från en JSON-fil. Denna funktion säkerställer att data hämtas korrekt och hanterar fel:

// 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: fs.readFile används för att läsa innehållet i filen ./database/posts.json;
  • JSON.parse: Den data som hämtas från filen parsas till ett JavaScript-objekt;
  • Felhantering: Om fel uppstår under läsning eller tolkning fångas dessa och felet kastas.

Definiera rutten "GET ALL POSTS"

Så här definieras rutten "GET ALL POSTS" i routern:

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

Ruttdefinition: Denna rutt hanterar HTTP GET-förfrågningar till rotvägen (/).

Rutthanterare: Inuti rutthanterarens funktion:

  • readData anropas för att hämta listan med inlägg från JSON-filen;
  • Om datahämtningen lyckas skickas den hämtade datan som svar med res.send(data);
  • Om fel uppstår under processen fångas felet, loggas till konsolen för felsökning (console.error(error.message)) och processen fortsätter.

Komplett kod för filen postsRoutes.js vid detta steg

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 allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 5

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Awesome!

Completion rate improved to 2.56

bookBygga GET-Endpointen för Alla Inlägg

Svep för att visa menyn

Vi kommer att undersöka hur man implementerar "GET ALL POSTS"-rutten i filen postsRoutes.js. Denna rutt hämtar en lista över alla inlägg från datakällan (database/posts.json) och skickar dem som svar till klienten.

Importera nödvändiga moduler och beroenden

I början av filen importeras de nödvändiga modulerna och beroendena:

const express = require("express");
const fs = require("fs/promises");
const validatePostData = require("../middlewares/validateData");
  • express: Import av Express-ramverket för att bygga våra rutter;
  • fs/promises: Denna modul tillhandahåller asynkrona filoperationer, vilka används för att läsa data från en JSON-fil;
  • validatePostData: Även om den inte används i denna rutt importeras validatePostData-middleware, vilket kommer att vara användbart för datavalidering i senare kapitel.

Initiering av en Express Router

En instans av en Express-router initieras, vilken hanterar alla rutter som definieras i denna fil:

const router = express.Router();

Skapa en funktion för att läsa data

En asynkron funktion med namnet readData definieras för att läsa data från en JSON-fil. Denna funktion säkerställer att data hämtas korrekt och hanterar fel:

// 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: fs.readFile används för att läsa innehållet i filen ./database/posts.json;
  • JSON.parse: Den data som hämtas från filen parsas till ett JavaScript-objekt;
  • Felhantering: Om fel uppstår under läsning eller tolkning fångas dessa och felet kastas.

Definiera rutten "GET ALL POSTS"

Så här definieras rutten "GET ALL POSTS" i routern:

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

Ruttdefinition: Denna rutt hanterar HTTP GET-förfrågningar till rotvägen (/).

Rutthanterare: Inuti rutthanterarens funktion:

  • readData anropas för att hämta listan med inlägg från JSON-filen;
  • Om datahämtningen lyckas skickas den hämtade datan som svar med res.send(data);
  • Om fel uppstår under processen fångas felet, loggas till konsolen för felsökning (console.error(error.message)) och processen fortsätter.

Komplett kod för filen postsRoutes.js vid detta steg

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 allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 5
some-alt