Introducción
Antes de poder construir una API REST, necesitas una base de proyecto funcional. Esta lección recorre cada paso: inicializar un proyecto Node.js, instalar Express, escribir un servidor mínimo y confirmar que realmente funciona. Al final tendrás un servidor en ejecución que responde a peticiones HTTP — la base sobre la que se construye cada lección posterior.
Se asume que Node.js (v18 o posterior) y npm ya están instalados en tu máquina. Ejecuta estos dos comandos para verificarlo antes de continuar:
Si alguno de los comandos devuelve un error, descarga Node.js desde nodejs.org (npm viene incluido con él).
Inicialización del proyecto
Crea un nuevo directorio para tu proyecto e inicialízalo como un paquete Node.js. El comando init genera un archivo package.json, que registra los metadatos y las dependencias de tu proyecto.
El flag -y acepta todos los valores predeterminados para que no se te solicite el nombre del proyecto, la versión, etc. Puedes editar package.json manualmente en cualquier momento. En este punto tu directorio contiene solo ese único archivo — aún no hay código.
A continuación, instala Express:
Esto descarga Express y sus dependencias en una carpeta node_modules y registra la dependencia en package.json bajo "dependencies". También verás que se crea un package-lock.json — este bloquea las versiones exactas de las dependencias para que cada desarrollador de tu equipo instale paquetes idénticos.
Construcción del primer servidor
Crea un archivo llamado server.js en la raíz del proyecto. Este archivo es el punto de entrada de tu aplicación.
Recorrido por cada parte: require('express') importa el framework. Llamar a express() crea una instancia de la aplicación almacenada en app. app.get() registra un manejador de ruta — el primer argumento es la ruta URL, el segundo es una callback que recibe el objeto de petición (req) y el objeto de respuesta (res). res.json() envía una respuesta JSON y establece el encabezado Content-Type automáticamente. Finalmente, app.listen() vincula el servidor a un puerto y comienza a aceptar conexiones.
Inicia el servidor:
Deberías ver el mensaje en la consola. Abre un navegador en http://localhost:3000 o usa curl:
Salida esperada:
Mejora del flujo de trabajo de desarrollo
Reiniciar el servidor manualmente después de cada cambio de código es tedioso. Instala nodemon como dependencia de desarrollo — observa tus archivos y reinicia automáticamente cuando detecta cambios.
Luego añade un script dev a package.json:
Ahora ejecuta el servidor en modo desarrollo:
Edita server.js, guarda y nodemon reinicia el proceso sin que tengas que hacer nada. El script start se mantiene para uso en producción, donde nodemon no es apropiado.
Una mejora más: parsea los cuerpos de las peticiones JSON entrantes. Express no lo hace por defecto. Añade esta línea de middleware antes de tus rutas:
Sin esto, req.body será undefined cuando un cliente envíe una petición POST con un payload JSON. Añadirlo ahora evitará confusiones de depuración más adelante.
Resumen
Ahora tienes un proyecto Express completamente funcional: un package.json que rastrea las dependencias, Express instalado, un server.js que escucha en el puerto 3000, una ruta GET funcional, nodemon para iterar rápidamente y el parseo de cuerpos JSON habilitado. Este es exactamente el esqueleto que se utiliza como punto de partida para cada patrón de API REST cubierto en el resto del curso. La siguiente lección pasa al enrutamiento — definir múltiples endpoints y organizarlos de forma limpia a medida que crece la API.