Node.js es una plataforma popular para construir aplicaciones del lado del servidor, y Express es un marco web minimalista que facilita el desarrollo de aplicaciones web y APIs. En este post, aprenderás a construir una API RESTful utilizando Node.js y Express. Exploraremos cómo configurar un proyecto, definir rutas, y manejar solicitudes HTTP.
Desarrollo del tema
Configuración del Proyecto
Para comenzar, necesitamos crear un nuevo proyecto de Node.js e instalar Express. Abre tu terminal y ejecuta los siguientes comandos:
mkdir my-api
cd my-api
npm init -y
npm install express
Creación del Servidor
Crea un archivo index.js
en la raíz del proyecto y configura un servidor básico con Express.
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('Hola Mundo!');
});
app.listen(port, () => {
console.log(`Servidor escuchando en http://localhost:${port}`);
});
Definición de Rutas
Definiremos algunas rutas básicas para nuestra API. Por ejemplo, una ruta para obtener todos los usuarios y otra para obtener un usuario por ID.
const users = [
{ id: 1, name: 'Juan' },
{ id: 2, name: 'Ana' },
{ id: 3, name: 'Carlos' }
];
app.get('/users', (req, res) => {
res.json(users);
});
app.get('/users/:id', (req, res) => {
const user = users.find(u => u.id === parseInt(req.params.id));
if (!user) return res.status(404).send('Usuario no encontrado');
res.json(user);
});
Manejo de Solicitudes POST
Para manejar solicitudes POST, necesitamos usar middleware para analizar el cuerpo de las solicitudes. Agregaremos un nuevo usuario a la lista.
app.use(express.json());
app.post('/users', (req, res) => {
const newUser = {
id: users.length + 1,
name: req.body.name
};
users.push(newUser);
res.status(201).json(newUser);
});
Manejo de Solicitudes PUT y DELETE
También podemos definir rutas para actualizar y eliminar usuarios.
app.put('/users/:id', (req, res) => {
const user = users.find(u => u.id === parseInt(req.params.id));
if (!user) return res.status(404).send('Usuario no encontrado');
user.name = req.body.name;
res.json(user);
});
app.delete('/users/:id', (req, res) => {
const userIndex = users.findIndex(u => u.id === parseInt(req.params.id));
if (userIndex === -1) return res.status(404).send('Usuario no encontrado');
const deletedUser = users.splice(userIndex, 1);
res.json(deletedUser);
});
Ejemplo Completo
A continuación, un ejemplo completo de nuestra API RESTful con todas las rutas definidas.
const express = require('express');
const app = express();
const port = 3000;
app.use(express.json());
const users = [
{ id: 1, name: 'Juan' },
{ id: 2, name: 'Ana' },
{ id: 3, name: 'Carlos' }
];
app.get('/', (req, res) => {
res.send('Hola Mundo!');
});
app.get('/users', (req, res) => {
res.json(users);
});
app.get('/users/:id', (req, res) => {
const user = users.find(u => u.id === parseInt(req.params.id));
if (!user) return res.status(404).send('Usuario no encontrado');
res.json(user);
});
app.post('/users', (req, res) => {
const newUser = {
id: users.length + 1,
name: req.body.name
};
users.push(newUser);
res.status(201).json(newUser);
});
app.put('/users/:id', (req, res) => {
const user = users.find(u => u.id === parseInt(req.params.id));
if (!user) return res.status(404).send('Usuario no encontrado');
user.name = req.body.name;
res.json(user);
});
app.delete('/users/:id', (req, res) => {
const userIndex = users.findIndex(u => u.id === parseInt(req.params.id));
if (userIndex === -1) return res.status(404).send('Usuario no encontrado');
const deletedUser = users.splice(userIndex, 1);
res.json(deletedUser);
});
app.listen(port, () => {
console.log(`Servidor escuchando en http://localhost:${port}`);
});
Conclusión
Crear una API RESTful con Node.js y Express es una tarea sencilla gracias a la flexibilidad y simplicidad de estas herramientas. Con los conceptos y ejemplos cubiertos en este post, ahora tienes las bases para construir tus propias APIs y aplicaciones del lado del servidor.