Desarrollo web

Práctica 3: API web de la tabla periódica

Objetivos

Durante esta práctica, los alumnos serán capaces de:

Esta actividad promueve las siguientes habilidades, valores y actitudes: análisis y síntesis, capacidad de resolver problemas, creatividad, y uso eficiente de la informática y las telecomunicaciones.

IMPORTANTE

Para esta actividad de programación, el uso de herramientas asistidas por IA, como GitHub Copilot, ChatGPT, Gemini o plataformas similares, para generar código automáticamente está estrictamente prohibido. El uso de herramientas de IA de esta manera socava el proceso de aprendizaje y viola las políticas de integridad académica. El propósito de esta tarea es evaluar su comprensión y aplicación de los conceptos cubiertos en el curso. El incumplimiento de estas pautas puede resultar en sanciones académicas, que incluyen, entre otras, una calificación más baja.

Si tienes alguna pregunta sobre la tarea o necesitas una aclaración sobre algún concepto, no dudes en visitar a tu profesor durante las horas de asesoría. Confía únicamente en tu conocimiento, los materiales del curso y cualquier recurso autorizado proporcionado por el profesor.

Descripción de la actividad

Esta práctica debe ser elaborada de manera individual.

  1. Crea un directorio llamado practica3. En este directorio deberás colocar todos los archivos requeridos para esta práctica.

  2. Dentro del directorio practica3 instala el módulo de express. En la terminal teclea:

    npm install express ejs
  3. Copia el archivo periodic_table.json al directorio practica3. Este archivo es un documento en formato JSON con toda la información necesaria para resolver esta práctica. Revísalo detalladamente. El archivo se debe leer usando la función readFile del módulo de fsPromises junto con la función JSON.parse para convertir el texto en format JSON a una estructura de datos manipulable desde JavaScript.

  4. Crea un archivo llamado app.mjs en el directorio practica3 y agrega el código necesario para implementar los siguientes endpoints de un API web:

    • Endpoint: /periodic_table/element/by_symbol/:symbol

      Devuelve un objeto JSON con atributos symbol, name, number y atomic_mass que corresponden al elemento :symbol de la tabla periódica.

      Ejemplo:

      /periodic_table/element/by_symbol/Au

      Devuelve:

      {
        "symbol": "Au",
        "name": "Gold",
        "number": 79,
        "atomic_mass": 196.9665695
      }
      
    • Endpoint: /periodic_table/element/by_number/:number

      Devuelve un objeto JSON con atributos symbol, name, number y atomic_mass que corresponden al elemento :number de la tabla periódica.

      Ejemplo:

      /periodic_table/element/by_number/47

      Devuelve:

      {
        "symbol": "Ag",
        "name": "Silver",
        "number": 47,
        "atomic_mass": 107.86822
      }
      
    • Endpoint: /periodic_table/group/:number

      Devuelve un arreglo de objetos JSON con atributos symbol, name, number y atomic_mass que pertenecen al grupo :number de la tabla periódica.

      Ejemplo:

      /periodic_table/group/11

      Devuelve:

      [
        {
          "symbol": "Cu",
          "name": "Copper",
          "number": 29,
          "atomic_mass": 63.5463
        },
        {
          "symbol": "Ag",
          "name": "Silver",
          "number": 47,
          "atomic_mass": 107.86822
        },
        {
          "symbol": "Au",
          "name": "Gold",
          "number": 79,
          "atomic_mass": 196.9665695
        },
        {
          "symbol": "Rg",
          "name": "Roentgenium",
          "number": 111,
          "atomic_mass": 282
        }
      ]
      
    • Endpoint: /periodic_table/period/:number

      Devuelve un arreglo de objetos JSON con atributos symbol, name, number y atomic_mass que pertenecen al periodo :number de la tabla periódica.

      Ejemplo:

      /periodic_table/period/1

      Devuelve:

      [
        {
          "symbol": "H",
          "name": "Hydrogen",
          "number": 1,
          "atomic_mass": 1.008
        },
        {
          "symbol": "He",
          "name": "Helium",
          "number": 2,
          "atomic_mass": 4.0026022
        }
      ]
      
  5. Corre el servidor de la aplicación web y verifica que todos los endpoints funcionen de la manera solicitada. Puedes usar una tabla periódica convencional para revisar tus resultados.

¿Qué se debe entregar?

El archivo app.mjs debe comenzar con un comentario que contenga el título de la práctica, la fecha y los datos personales del autor (nombre y matrícula). Por ejemplo:

/******************************************
 * Práctica 3: API web de la tabla periódica
 * Fecha: 11 de marzo, 2026
 * Autor: A01777771 Loki Laufeyson
 ******************************************/

Crea un archivo comprimido TAR GZ o ZIP con el contenido completo del directorio practica3. El archivo resultante se debe llamar practica3.tar.gz o practica3.zip.

Instrucciones para subir archivo

Para entregar el archivo practica3.tar.gz/practica3.zip, ingresa los siguientes datos:

Solicitar NIP

La fecha límite es el miércoles 11 de marzo.