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ä
Quizzes & Challenges
Quizzes
Challenges
/
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

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

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