Crear un Servidor con Node.js y Express: Guía Completa

Node.js es un entorno de ejecución de JavaScript que permite crear aplicaciones del lado del servidor de manera eficiente y escalable. Express.js, por su parte, es un framework minimalista para Node.js que facilita la creación de servidores web y APIs RESTful. En este tutorial, aprenderás cómo crear un servidor básico utilizando Node.js y Express, y cómo manejar rutas y peticiones HTTP.

  Requisitos previos

  • Tener instalado Node.js y npm.
  • Conocimientos básicos de JavaScript.

1Crear un nuevo proyecto

Comienza creando una carpeta para tu proyecto y navegando hacia ella:

bash
mkdir mi-servidor-node
cd mi-servidor-node

Luego, inicializa un nuevo proyecto Node.js con el comando:

bash
npm init -y

Esto generará un archivo package.json en tu carpeta de proyecto.

2Instalar Express

Instala Express en tu proyecto utilizando npm:

bash
npm install express

3Crear el archivo principal del servidor

Ahora crea el archivo index.js que contendrá la lógica principal del servidor:

bash
touch index.js

4Escribir el servidor básico en Express

Dentro del archivo index.js, escribe el siguiente código para configurar un servidor básico:

javascript
const express = require('express');
const app = express();
const PORT = 3000;

app.use(express.json()); // Middleware para parsear JSON

app.get('/', (req, res) => {
res.send('¡Hola, Mundo!');
});

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

Este código configura un servidor Express que responde a las peticiones GET en la ruta raíz con el mensaje “¡Hola, Mundo!”.

2Ejecuta el servidor:

Para iniciar el servidor, utiliza uno de los siguientes comandos:

bash
# Ejecuta el servidor una vez.
node index.js 

# Ejecuta el servidor y reinicia automáticamente al detectar cambios en el archivo index.js
node --watch index.js

El servidor comenzará a escuchar en el puerto 3000. Puedes abrir tu navegador y visitar http://localhost:3000 para ver la respuesta “¡Hola, Mundo!”.

6Crear rutas adicionales

Endpoint GET

Añadimos un endpoint para devolver una lista de usuarios:

javascript
const users = [
{ id: 1, name: 'Urian Viera' },
{ id: 2, name: 'Brenda Viera' },
];

app.get('/users', (req, res) => {
res.json(users);
});

Ahora, cuando navegues a http://localhost:3000/users, recibirás la lista de usuarios en formato JSON.

Endpoint POST

Añadimos un endpoint POST para agregar un nuevo usuario:

javascript
app.post('/users', (req, res) => {
const newUser = req.body;
newUser.id = users.length + 1;
users.push(newUser);
res.status(201).json(newUser);
});

Este endpoint acepta datos en formato JSON y agrega un nuevo usuario a la lista.

Endpoint DELETE

También puedes agregar un endpoint DELETE para eliminar un usuario por su ID:

javascript
app.delete('/users/:id', (req, res) => {
const userId = parseInt(req.params.id);
const userIndex = users.findIndex(user => user.id === userId);

if (userIndex >= 0) {
  users.splice(userIndex, 1);
  res.status(204).send();
} else {
  res.status(404).json({ message: 'Usuario no encontrado' });
}
});

6Pruebas de los endpoints

Puedes probar estos endpoints utilizando herramientas como Postman o Insomnia. Asegúrate de enviar las solicitudes adecuadas:

  • GET /users devuelve la lista de usuarios.
  • POST /users para agregar un usuario con el cuerpo:
json
{ "name": "Nuevo Usuario" }
  • DELETE /users/1 para eliminar el usuario con ID 1.

Recursos adicionales