← Nivel 3 – Maestro

Lección 8 de 10 ⏱ 40 minutos Premium

Un servidor pequeño con Express

Construye tu propio servidor en Node.js y Express. Tu primera API responde a su primera petición.

Te lo muestro: montar un servidor

Express es el paquete más popular para construir servidores en Node.js – convierte el trabajo en unas pocas líneas. Un servidor es un proyecto aparte, separado de la app React (recuerda: frontend y backend son dos mitades). En la terminal:

cd Desktop
mkdir my-server
cd my-server
npm init -y
npm install express

Abre la carpeta en VS Code y crea un archivo llamado server.js:

const express = require("express");
const app = express();

// When someone sends a GET to /api/hello, respond
app.get("/api/hello", (request, response) => {
  response.json({ message: "Hi! This is your own server. 🎉" });
});

app.listen(3900, () => {
  console.log("Server running at http://localhost:3900");
});

Ejecútalo:

node server.js

Y abre http://localhost:3900/api/hello en el navegador. ¿Ves la respuesta JSON? Acabas de construir un servidor. Sin magia – 10 líneas.

Qué pasa en el código:

Paras el servidor con Ctrl+C. Y ojo: tras cada cambio de código, hay que pararlo y arrancarlo otra vez – un servidor no es Vite, no se actualiza solo.

Te lo muestro: un servidor con datos

Un servidor suele entregar datos. Añade un segundo endpoint encima de listen:

const results = [
  { opponent: "Lakeside", score: "3:1", home: true },
  { opponent: "Northgate", score: "2:2", home: false },
  { opponent: "Elmwood", score: "4:0", home: true },
];

app.get("/api/results", (request, response) => {
  response.json(results);
});

Reinicia el servidor y abre http://localhost:3900/api/results – tus datos, servidos por una API. Así funciona toda web grande (solo que con base de datos en lugar de un array).

Ahora tú 💪

  1. Haz funcionar un servidor siguiendo la guía.
  2. Añade un endpoint con datos de tu proyecto: 🏫 /api/menu (un array de comidas de la semana) · 🙋 /api/favorites (tus mejores juegos/libros) · 🌍 /api/trips (una lista de viajes) · ⚽ /api/results (resultados de partidos).
  3. Añade un endpoint divertido /api/random que devuelva un mensaje distinto cada vez:
const messages = ["We're winning today!", "Practice at 5 PM!", "Let's go, Eagles!"];

app.get("/api/random", (request, response) => {
  const random = messages[Math.floor(Math.random() * messages.length)];
  response.json({ message: random });
});
  1. Prueba todos los endpoints en el navegador – y luego prueba a llamar a uno con fetch() desde la consola, como aprendiste en la lección anterior.
⚠️

“Cannot GET /api/…” significa que el endpoint no existe – comprueba un error tipográfico en la dirección y si reiniciaste el servidor tras cambiarlo. “EADDRINUSE” significa que el puerto 3900 ya está en uso – probablemente tienes un servidor viejo en otra terminal; búscalo y páralo (Ctrl+C).

Compruébalo tú: Tu servidor corre en el puerto 3900 y responde en varios endpoints con tus propios datos JSON. Conoces el frontend, empiezas con el backend – solo falta conectarlos. Lo haremos en la siguiente lección con un libro de visitas.

Lo que te llevas de esta lección