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

Bygga GET-endpunkten för alla inlägg

Svep för att visa menyn

Vi kommer att utforska 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 ett svar till klienten.

Importera nödvändiga moduler och beroenden

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

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

Initiera en Express Router

Vi initierar en instans av en Express-router, som hanterar alla rutter som definieras i denna fil:

const router = express.Router();

Skapa en funktion för att läsa data

Vi definierar en asynkron funktion med namnet readData 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: Vi använder fs.readFile 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 några fel uppstår under läsning eller tolkning fångas de upp och felet kastas.

Definiera "GET ALL POSTS"-rutt

Så här definierar vi "GET ALL POSTS"-rutten 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: Vi anger att denna rutt hanterar HTTP GET-förfrågningar till rotvägen (/).

Rutthanterare: Inuti rutthanterarfunktionen:

  • Vi anropar funktionen readData för att hämta listan med inlägg från JSON-filen;
  • Om datahämtningen lyckas skickar vi den hämtade datan som svar med res.send(data);
  • Om några fel uppstår under denna process fångar vi felet, loggar det till konsolen för felsökning (console.error(error.message)) och 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

Bygga GET-endpunkten för alla inlägg

Vi kommer att utforska 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 ett svar till klienten.

Importera nödvändiga moduler och beroenden

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

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

Initiera en Express Router

Vi initierar en instans av en Express-router, som hanterar alla rutter som definieras i denna fil:

const router = express.Router();

Skapa en funktion för att läsa data

Vi definierar en asynkron funktion med namnet readData 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: Vi använder fs.readFile 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 några fel uppstår under läsning eller tolkning fångas de upp och felet kastas.

Definiera "GET ALL POSTS"-rutt

Så här definierar vi "GET ALL POSTS"-rutten 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: Vi anger att denna rutt hanterar HTTP GET-förfrågningar till rotvägen (/).

Rutthanterare: Inuti rutthanterarfunktionen:

  • Vi anropar funktionen readData för att hämta listan med inlägg från JSON-filen;
  • Om datahämtningen lyckas skickar vi den hämtade datan som svar med res.send(data);
  • Om några fel uppstår under denna process fångar vi felet, loggar det till konsolen för felsökning (console.error(error.message)) och 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