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

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

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