¡Ven a la JSConf España 2026! Comprar entradas

Creando nuestro primer servidor con Express

En la clase anterior vimos qué es Express y por qué tiene sentido introducirlo cuando nuestra API empieza a crecer y el servidor nativo se vuelve difícil de mantener.

En esta clase damos el siguiente paso: crear nuestro primer servidor con Express y dejar atrás el servidor HTTP hecho a mano.

Punto de partida

Hasta ahora teníamos un servidor creado con node:http, donde:

  • Comprobábamos manualmente el método (GET, POST…).
  • Comparábamos el pathname.
  • Gestionábamos cabeceras a mano.
  • Enviábamos la respuesta manualmente.

Todo funcionaba, pero el código empezaba a ser largo y repetitivo. La idea ahora es replicar ese servidor, pero usando Express.

Instalación de Express

Lo primero es instalar Express en el proyecto usando npm:

npm install express

Nota: A partir de aquí ya podemos importar Express y crear nuestra aplicación.

Creando la aplicación de Express

En lugar de crear un servidor con createServer, ahora creamos una instancia de una aplicación de Express:

import express from 'express'

const app = express()

Esta app será nuestro servidor y el núcleo de nuestra aplicación.

Levantando el servidor

Para escuchar en un puerto, Express nos proporciona directamente el método listen:

const PORT = process.env.PORT ?? 1234

app.listen(PORT, () => {
  console.log(`Servidor escuchando en http://localhost:${PORT}`)
})

Ya no necesitamos createServer ni callbacks manuales complejos. Es mucho más directo.

Definiendo una primera ruta

En lugar de usar condicionales if o switch para el enrutamiento, Express nos permite definir rutas directamente usando métodos:

app.get('/', (req, res) => {
  res.send('Hola mundo desde Express')
})

Aquí pasan varias cosas importantes:

  1. Usamos app.get para manejar peticiones GET.
  2. No comprobamos el método manualmente.
  3. No cerramos la respuesta a mano con res.end().
  4. Express se encarga de todo el ciclo de la petición.

Comparación con el servidor nativo

Al usar Express:

  • No hay if para validar el método.
  • No hay parsing manual de la URL.
  • No hay res.writeHead ni res.end.
  • El código es mucho más legible y declarativo.

El comportamiento final es el mismo, pero el código es mucho más simple y fácil de mantener.

Qué hemos conseguido

En muy pocas líneas hemos logrado:

  • Sustituir el servidor HTTP nativo.
  • Simplificar el arranque del servidor.
  • Definir rutas de forma clara.
  • Eliminar código repetitivo (boilerplate).

Este es el primer paso real usando Express en el proyecto.

Los puntos clave de la clase

  • ✅ Instalamos Express en el proyecto.
  • ✅ Creamos una aplicación con express().
  • ✅ Levantamos el servidor con app.listen.
  • ✅ Definimos rutas con app.get.
  • ✅ Reemplazamos el servidor nativo por Express.

En la siguiente clase empezaremos a añadir más rutas y comportamiento real a nuestro servidor usando Express.