Construir una API de noticias con Node.js

JavaScriptJavaScriptBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

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

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/AdvancedConceptsGroup(["Advanced Concepts"]) javascript(("JavaScript")) -.-> javascript/DOMManipulationGroup(["DOM Manipulation"]) javascript(("JavaScript")) -.-> javascript/NetworkingGroup(["Networking"]) javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript/BasicConceptsGroup -.-> javascript/cond_stmts("Conditional Statements") javascript/AdvancedConceptsGroup -.-> javascript/error_handle("Error Handling") javascript/DOMManipulationGroup -.-> javascript/dom_manip("DOM Manipulation") javascript/DOMManipulationGroup -.-> javascript/event_handle("Event Handling") javascript/NetworkingGroup -.-> javascript/http_req("HTTP Requests") javascript/NetworkingGroup -.-> javascript/json("JSON") javascript/NetworkingGroup -.-> javascript/api_interact("API Interaction") subgraph Lab Skills javascript/cond_stmts -.-> lab-445682{{"Construir una API de noticias con Node.js"}} javascript/error_handle -.-> lab-445682{{"Construir una API de noticias con Node.js"}} javascript/dom_manip -.-> lab-445682{{"Construir una API de noticias con Node.js"}} javascript/event_handle -.-> lab-445682{{"Construir una API de noticias con Node.js"}} javascript/http_req -.-> lab-445682{{"Construir una API de noticias con Node.js"}} javascript/json -.-> lab-445682{{"Construir una API de noticias con Node.js"}} javascript/api_interact -.-> lab-445682{{"Construir una API de noticias con Node.js"}} end

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.

✨ Revisar Solución y Practicar

Resumen

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