Introducción
Construir una API es una habilidad esencial para los desarrolladores web modernos. Node.js, con su arquitectura basada en eventos y su modelo de I/O no bloqueante, es una excelente opción para crear APIs rápidas y escalables. En este artículo, aprenderás cómo construir una API RESTful básica desde cero utilizando Node.js y Express.
1. Configuración del Entorno
Antes de comenzar, asegúrate de tener instalado Node.js en tu máquina. Puedes descargarlo desde nodejs.org. Después de la instalación, sigue estos pasos:
- Crear un nuevo directorio para tu proyecto:bashCopiar código
mkdir mi-api cd mi-api
- Inicializar un nuevo proyecto de Node.js:bashCopiar código
npm init -y
Este comando crea un archivopackage.json
que almacenará la configuración de tu proyecto y sus dependencias. - Instalar Express:bashCopiar código
npm install express
Express es un marco web minimalista para Node.js que facilita la creación de servidores y APIs.
2. Crear el Servidor Básico
Crea un archivo llamado server.js
en tu directorio de proyecto:
// server.js
const express = require('express');
const app = express();
const PORT = process.env.PORT || 3000;
// Middleware para analizar el cuerpo de las solicitudes
app.use(express.json());
// Ruta de prueba
app.get('/', (req, res) => {
res.send('¡Hola, mundo!');
});
// Iniciar el servidor
app.listen(PORT, () => {
console.log(`Servidor corriendo en http://localhost:${PORT}`);
});
Para iniciar el servidor, ejecuta el siguiente comando en la terminal:
node server.js
Abre tu navegador y ve a http://localhost:3000
. Deberías ver el mensaje «¡Hola, mundo!».
3. Definir Rutas y Controladores
Ahora, vamos a definir algunas rutas para nuestra API. Supongamos que estamos creando una API para gestionar un conjunto de tareas.
- Crear un directorio para las rutas:bashCopiar código
mkdir routes
- Crear un archivo
tasks.js
dentro deroutes
:
routes/tasks.js
const express = require('express');
const router = express.Router();
let tasks = []; // Un array para almacenar tareas en memoria
// Obtener todas las tareas
router.get('/', (req, res) => {
res.json(tasks);
});
// Crear una nueva tarea
router.post('/', (req, res) => {
const task = {
id: tasks.length + 1,
title: req.body.title,
completed: false
};
tasks.push(task);
res.status(201).json(task);
});
// Actualizar una tarea por ID
router.put('/:id', (req, res) => {
const taskId = parseInt(req.params.id);
const task = tasks.find(t => t.id === taskId);
if (!task) return res.status(404).send('Tarea no encontrada.');
task.title = req.body.title !== undefined ? req.body.title : task.title;
task.completed = req.body.completed !== undefined ? req.body.completed : task.completed;
res.json(task);
});
// Eliminar una tarea por ID
router.delete('/:id', (req, res) => {
const taskId = parseInt(req.params.id);
tasks = tasks.filter(t => t.id !== taskId);
res.status(204).send();
});
module.exports = router;
- Integrar las rutas en
server.js
:
Modifica server.js
para incluir las nuevas rutas:
// server.js
const express = require('express');
const app = express();
const PORT = process.env.PORT || 3000;
app.use(express.json());
// Importar y usar las rutas
const tasksRouter = require('./routes/tasks');
app.use('/api/tasks', tasksRouter);
// Iniciar el servidor
app.listen(PORT, () => {
console.log(`Servidor corriendo en http://localhost:${PORT}`);
});
4. Probar la API
Ahora que has definido las rutas, puedes probar tu API utilizando herramientas como Postman o cURL.
- Obtener todas las tareas:Realiza una solicitud GET a
http://localhost:3000/api/tasks
. - Crear una nueva tarea:Realiza una solicitud POST a
http://localhost:3000/api/tasks
con un cuerpo JSON, por ejemplo:jsonCopiar código{ "title": "Aprender Node.js" }
- Actualizar una tarea:Realiza una solicitud PUT a
http://localhost:3000/api/tasks/1
con un cuerpo JSON, por ejemplo:jsonCopiar código{ "title": "Aprender Node.js y Express", "completed": true }
- Eliminar una tarea:Realiza una solicitud DELETE a
http://localhost:3000/api/tasks/1
.
5. Mejorar la API
A medida que tu API crece, puedes considerar implementar características adicionales:
- Persistencia de datos: En lugar de almacenar tareas en un array en memoria, puedes usar una base de datos como MongoDB, PostgreSQL o MySQL.
- Validación de datos: Utiliza bibliotecas como
Joi
oexpress-validator
para validar y sanitizar los datos de entrada. - Autenticación y autorización: Implementa autenticación utilizando JWT (JSON Web Tokens) o bibliotecas como Passport.js.
- Documentación de la API: Usa herramientas como Swagger o Postman para documentar tu API, lo que facilitará su uso a otros desarrolladores.
Conclusión
Crear tu propia API con Node.js es un proceso sencillo y educativo. Al seguir estos pasos, has construido una API RESTful básica que puedes expandir y mejorar con el tiempo. Con la creciente demanda de servicios web y aplicaciones, dominar la creación de APIs es una habilidad valiosa que te abrirá muchas puertas en el mundo del desarrollo web. ¡Ahora es tu turno de experimentar y construir algo increíble!