Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele GET-Kaikkien Julkaisujen Päätepisteen Rakentaminen | REST-rajapintojen Rakentaminen Node.js:llä ja Express.js:llä
Backend-kehitys Node.js:llä ja Express.js:llä

bookGET-Kaikkien Julkaisujen Päätepisteen Rakentaminen

Tässä osiossa tarkastellaan, kuinka toteutetaan "GET ALL POSTS" -reitti tiedostossa postsRoutes.js. Tämä reitti hakee kaikki julkaisut tietolähteestä (database/posts.json) ja palauttaa ne vastauksena asiakkaalle.

Tarvittavien moduulien ja riippuvuuksien tuonti

Tiedoston alussa tuodaan tarvittavat moduulit ja riippuvuudet:

const express = require("express");
const fs = require("fs/promises");
const validatePostData = require("../middlewares/validateData");
  • express: Tuodaan Express-kehys reittien rakentamista varten;
  • fs/promises: Tämä moduuli tarjoaa asynkronisia tiedosto-operaatioita, joita käytetään JSON-tiedoston lukemiseen;
  • validatePostData: Vaikka tätä middlewarea ei käytetä tässä reitissä, tuodaan validatePostData-middleware tiedon validointia varten myöhemmissä luvuissa.

Express-reitittimen alustaminen

Alustetaan Express-reitittimen instanssi, joka käsittelee kaikki tässä tiedostossa määritellyt reitit:

const router = express.Router();

Datan lukemiseen tarkoitetun funktion luominen

Määritellään asynkroninen funktio nimeltä readData, joka lukee dataa JSON-tiedostosta. Tämä funktio varmistaa, että data haetaan oikein ja käsittelee virheet:

// 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: Käytetään fs.readFile -metodia tiedoston ./database/posts.json sisällön lukemiseen;
  • JSON.parse: Tiedostosta haettu data jäsennetään JavaScript-olioksi;
  • Virheenkäsittely: Jos lukemisen tai jäsentämisen aikana tapahtuu virhe, se otetaan kiinni ja virhe heitetään eteenpäin.

"GET ALL POSTS" -reitityksen määrittely

Näin määritellään "GET ALL POSTS" -reitti reitittimessä:

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

Reitin määrittely: Tämä reitti käsittelee HTTP GET -pyynnöt juuripolkuun (/).

Reitin käsittelijä: Reitin käsittelijäfunktion sisällä:

  • Kutsutaan readData-funktiota, joka hakee postaukset JSON-tiedostosta;
  • Jos datan haku onnistuu, lähetetään haettu data vastauksena käyttäen res.send(data);
  • Jos prosessin aikana ilmenee virheitä, virhe otetaan kiinni, kirjataan konsoliin virheenkorjausta varten (console.error(error.message)) ja jatketaan.

postsRoutes.js-tiedoston täydellinen koodi tässä vaiheessa

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

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 5

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Awesome!

Completion rate improved to 2.56

bookGET-Kaikkien Julkaisujen Päätepisteen Rakentaminen

Pyyhkäise näyttääksesi valikon

Tässä osiossa tarkastellaan, kuinka toteutetaan "GET ALL POSTS" -reitti tiedostossa postsRoutes.js. Tämä reitti hakee kaikki julkaisut tietolähteestä (database/posts.json) ja palauttaa ne vastauksena asiakkaalle.

Tarvittavien moduulien ja riippuvuuksien tuonti

Tiedoston alussa tuodaan tarvittavat moduulit ja riippuvuudet:

const express = require("express");
const fs = require("fs/promises");
const validatePostData = require("../middlewares/validateData");
  • express: Tuodaan Express-kehys reittien rakentamista varten;
  • fs/promises: Tämä moduuli tarjoaa asynkronisia tiedosto-operaatioita, joita käytetään JSON-tiedoston lukemiseen;
  • validatePostData: Vaikka tätä middlewarea ei käytetä tässä reitissä, tuodaan validatePostData-middleware tiedon validointia varten myöhemmissä luvuissa.

Express-reitittimen alustaminen

Alustetaan Express-reitittimen instanssi, joka käsittelee kaikki tässä tiedostossa määritellyt reitit:

const router = express.Router();

Datan lukemiseen tarkoitetun funktion luominen

Määritellään asynkroninen funktio nimeltä readData, joka lukee dataa JSON-tiedostosta. Tämä funktio varmistaa, että data haetaan oikein ja käsittelee virheet:

// 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: Käytetään fs.readFile -metodia tiedoston ./database/posts.json sisällön lukemiseen;
  • JSON.parse: Tiedostosta haettu data jäsennetään JavaScript-olioksi;
  • Virheenkäsittely: Jos lukemisen tai jäsentämisen aikana tapahtuu virhe, se otetaan kiinni ja virhe heitetään eteenpäin.

"GET ALL POSTS" -reitityksen määrittely

Näin määritellään "GET ALL POSTS" -reitti reitittimessä:

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

Reitin määrittely: Tämä reitti käsittelee HTTP GET -pyynnöt juuripolkuun (/).

Reitin käsittelijä: Reitin käsittelijäfunktion sisällä:

  • Kutsutaan readData-funktiota, joka hakee postaukset JSON-tiedostosta;
  • Jos datan haku onnistuu, lähetetään haettu data vastauksena käyttäen res.send(data);
  • Jos prosessin aikana ilmenee virheitä, virhe otetaan kiinni, kirjataan konsoliin virheenkorjausta varten (console.error(error.message)) ja jatketaan.

postsRoutes.js-tiedoston täydellinen koodi tässä vaiheessa

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

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 5
some-alt