Construir una API de noticias con Node.js

JavaScriptBeginner
Practicar Ahora

Introducción

En este proyecto, aprenderás a crear una API de noticias simple utilizando Node.js. Aprenderás a crear un servidor, manejar diferentes rutas y devolver datos de noticias en un formato específico.

👀 Vista previa

curl http://localhost:8080/news
## Salida:
## [{"channelId":"5572a108b3cdc86cf39001cd","name":"National Focus"},{"channelId":"5572a108b3cdc86cf39001ce","name":"International Focus"}]

curl http://localhost:8080
## Salida:
## 404

🎯 Tareas

En este proyecto, aprenderás:

  • Cómo crear un servidor utilizando Node.js
  • Cómo manejar la ruta /news y devolver datos de noticias
  • Cómo manejar otras rutas y devolver una respuesta 404

🏆 Logros

Después de completar este proyecto, podrás:

  • Comprender los conceptos básicos de creación de un servidor utilizando Node.js
  • Implementar una API simple para devolver datos de noticias
  • Manejar diferentes rutas y proporcionar respuestas adecuadas

Crea un servidor

Para comenzar, abre el editor. Deberías ver un archivo en el editor: "app.js".

En este paso, aprenderás a crear un servidor utilizando Node.js. Sigue los pasos siguientes para completar este paso:

  1. Abre el archivo app.js en tu entorno de codificación.

  2. Importa el módulo http, que proporciona la funcionalidad para crear un servidor:

    const http = require("http");
    
  3. Crea un nuevo servidor utilizando el método createServer():

    const serve = http.createServer();
    
  4. Agrega un controlador de eventos al servidor para manejar las solicitudes entrantes:

    serve.on("request", (req, res) => {
      // TODO: Agrega código para manejar la solicitud
    });
    
  5. Inicia el servidor y escucha en el puerto 8080:

    serve.listen(8080, () => {
      console.log("El servicio se ha iniciado!");
    });
    

Maneja la ruta /news

En este paso, aprenderás a manejar la ruta /news y devolver datos de noticias. Sigue los pasos siguientes para completar este paso:

  1. Dentro del controlador de eventos de solicitud, configura el encabezado de respuesta para usar el formato utf8:

    res.setHeader("Content-type", "text/html;charset=utf8");
    
  2. Verifica la URL solicitada:

    if (req.url == "/news") {
      // Maneja la ruta /news
    } else {
      // Maneja otras rutas
    }
    
  3. Prepara los datos de noticias en el formato requerido:

    const data = [
      {
        channelId: "5572a108b3cdc86cf39001cd",
        name: "National Focus"
      },
      {
        channelId: "5572a108b3cdc86cf39001ce",
        name: "International Focus"
      }
    ];
    
  4. Envía los datos de noticias como respuesta:

    res.end(JSON.stringify(data));
    

Maneja otras rutas

En este paso, aprenderás a manejar otras rutas que no sean /news.

  1. Dentro del controlador de eventos de solicitud, agrega un bloque else para manejar otras rutas:

    if (req.url == "/news") {
      // Maneja la ruta /news
      //...
    } else {
      // Maneja otras rutas
      res.end("404");
    }
    
  2. En el bloque else, envía una respuesta 404 para indicar que la ruta solicitada no se encontró.

Ahora, tu archivo app.js debería verse así:

const http = require("http");
const serve = http.createServer();

serve.on("request", (req, res) => {
  // TODO: Agrega código para manejar la solicitud
  res.setHeader("Content-type", "text/html;charset=utf8");
  console.log(req.url);
  if (req.url == "/news") {
    const data = [
      {
        channelId: "5572a108b3cdc86cf39001cd",
        name: "National Focus"
      },
      {
        channelId: "5572a108b3cdc86cf39001ce",
        name: "International Focus"
      }
    ];

    res.end(JSON.stringify(data));
  } else {
    res.end("404");
  }
});

serve.listen(8080, () => {
  console.log("El servicio se ha iniciado!");
});

Prueba el servidor

  1. Ejecuta el servidor utilizando el siguiente comando en la terminal:

    node app.js
    
  2. Abre una nueva terminal y verifica que la terminal sea correcta con el siguiente comando:

curl http://localhost:8080/news
## Salida:
## [{"channelId":"5572a108b3cdc86cf39001cd","name":"National Focus"},{"channelId":"5572a108b3cdc86cf39001ce","name":"International Focus"}]

curl http://localhost:8080
## Salida:
## 404

¡Felicidades! Has creado con éxito una API de noticias utilizando Node.js.

Resumen

¡Felicidades! Has completado este proyecto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.

✨ Revisar Solución y Practicar✨ Revisar Solución y Practicar✨ Revisar Solución y Practicar✨ Revisar Solución y Practicar