Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Creación del Endpoint GET para Todas las Publicaciones | Creación de API REST con Node.js y Express.js
Desarrollo Backend con Node.js y Express.js

bookCreación del Endpoint GET para Todas las Publicaciones

Exploraremos cómo implementar la ruta "GET ALL POSTS" en el archivo postsRoutes.js. Esta ruta recupera una lista de todas las publicaciones desde la fuente de datos (database/posts.json) y las envía como respuesta al cliente.

Importación de módulos y dependencias requeridas

Al inicio del archivo, se importan los módulos y dependencias necesarios:

const express = require("express");
const fs = require("fs/promises");
const validatePostData = require("../middlewares/validateData");
  • express: Se importa el framework Express para construir las rutas;
  • fs/promises: Este módulo proporciona operaciones de archivos asíncronas, que se utilizarán para leer datos desde un archivo JSON;
  • validatePostData: Aunque no se utiliza en esta ruta, se importa el middleware validatePostData, que será útil para la validación de datos en capítulos posteriores.

Inicialización de un Router de Express

Se inicializa una instancia de un router de Express, el cual gestionará todas las rutas definidas en este archivo:

const router = express.Router();

Creación de una Función para Leer Datos

Se define una función asíncrona llamada readData para leer datos desde un archivo JSON. Esta función garantiza que los datos se obtengan correctamente y gestiona los errores:

// 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: Se utiliza fs.readFile para leer el contenido del archivo ./database/posts.json;
  • JSON.parse: Los datos obtenidos del archivo se convierten en un objeto JavaScript;
  • Gestión de errores: Si ocurre algún error durante la lectura o el análisis, se captura y se lanza el error.

Definición de la Ruta "GET ALL POSTS"

A continuación se muestra cómo se define la ruta "GET ALL POSTS" dentro del router:

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

Definición de la ruta: Se especifica que esta ruta gestiona solicitudes HTTP GET a la ruta raíz (/).

Manejador de la ruta: Dentro de la función manejadora de la ruta:

  • Se llama a la función readData para obtener la lista de publicaciones desde el archivo JSON;
  • Si la obtención de datos es exitosa, se envían los datos obtenidos como respuesta utilizando res.send(data);
  • Si ocurre algún error durante este proceso, se captura el error, se registra en la consola para depuración (console.error(error.message)) y se continúa.

Código completo del archivo postsRoutes.js en este paso

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

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 5

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

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

bookCreación del Endpoint GET para Todas las Publicaciones

Desliza para mostrar el menú

Exploraremos cómo implementar la ruta "GET ALL POSTS" en el archivo postsRoutes.js. Esta ruta recupera una lista de todas las publicaciones desde la fuente de datos (database/posts.json) y las envía como respuesta al cliente.

Importación de módulos y dependencias requeridas

Al inicio del archivo, se importan los módulos y dependencias necesarios:

const express = require("express");
const fs = require("fs/promises");
const validatePostData = require("../middlewares/validateData");
  • express: Se importa el framework Express para construir las rutas;
  • fs/promises: Este módulo proporciona operaciones de archivos asíncronas, que se utilizarán para leer datos desde un archivo JSON;
  • validatePostData: Aunque no se utiliza en esta ruta, se importa el middleware validatePostData, que será útil para la validación de datos en capítulos posteriores.

Inicialización de un Router de Express

Se inicializa una instancia de un router de Express, el cual gestionará todas las rutas definidas en este archivo:

const router = express.Router();

Creación de una Función para Leer Datos

Se define una función asíncrona llamada readData para leer datos desde un archivo JSON. Esta función garantiza que los datos se obtengan correctamente y gestiona los errores:

// 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: Se utiliza fs.readFile para leer el contenido del archivo ./database/posts.json;
  • JSON.parse: Los datos obtenidos del archivo se convierten en un objeto JavaScript;
  • Gestión de errores: Si ocurre algún error durante la lectura o el análisis, se captura y se lanza el error.

Definición de la Ruta "GET ALL POSTS"

A continuación se muestra cómo se define la ruta "GET ALL POSTS" dentro del router:

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

Definición de la ruta: Se especifica que esta ruta gestiona solicitudes HTTP GET a la ruta raíz (/).

Manejador de la ruta: Dentro de la función manejadora de la ruta:

  • Se llama a la función readData para obtener la lista de publicaciones desde el archivo JSON;
  • Si la obtención de datos es exitosa, se envían los datos obtenidos como respuesta utilizando res.send(data);
  • Si ocurre algún error durante este proceso, se captura el error, se registra en la consola para depuración (console.error(error.message)) y se continúa.

Código completo del archivo postsRoutes.js en este paso

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

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 5
some-alt