Introducción: Por qué REST API en JavaScript es rápido y sencillo
Crear tu propio REST API es uno de los primeros pasos para entender el desarrollo backend. Si ya estás familiarizado con JavaScript, puedes escribir la parte del servidor de una aplicación en literalmente media hora. En este artículo, analizaremos cómo escribir un REST API en JavaScript usando Node.js y el framework Express. Crearemos una API simple para gestionar una lista de tareas (To-Do List) con soporte para operaciones CRUD estándar: crear, leer, actualizar y eliminar datos.
Esta guía es ideal para principiantes que quieren iniciar rápidamente su primer servidor y entender cómo funcionan las solicitudes, rutas y middleware. Al final del artículo, tendrás una API funcional que puedes probar en Postman o en el navegador.
Paso 1: Preparación del entorno e instalación de dependencias
Antes de escribir código, asegúrate de tener instalado Node.js (versión 16 o superior). Si no es así, descárgalo desde el sitio oficial. Para verificar, ejecuta en la terminal:
node -vnpm -vAhora crea una carpeta para el proyecto e inicialízalo:
mkdir my-apicd my-apinpm init -yInstala la dependencia principal: el framework Express, que simplifica enormemente el trabajo con HTTP:
npm install expressTambién instalaremos nodemon (opcional) para la recarga automática del servidor al cambiar el código:
npm install --save-dev nodemonAñade el script de inicio en el archivo package.json:
"scripts": { "start": "node index.js", "dev": "nodemon index.js"}Paso 2: Creación del servidor básico y primera ruta
Crea un archivo index.js en la raíz del proyecto. Comenzamos importando Express e iniciando el servidor en el puerto 3000:
const express = require('express');const app = express();const PORT = 3000;
// Middleware para parsear JSONapp.use(express.json());
// Ruta de pruebaapp.get('/', (req, res) => { res.send('¡Hola, mundo! La API funciona.');});
app.listen(PORT, () => { console.log(`Servidor iniciado en http://localhost:${PORT}`);});Inicia el servidor con el comando npm run dev (si usas nodemon) o node index.js. Abre el navegador y ve a http://localhost:3000 — deberías ver el mensaje "¡Hola, mundo! La API funciona."
¡Felicidades! Acabas de escribir un REST API en JavaScript. Ahora agreguemos la lógica real.
Paso 3: Implementación de operaciones CRUD para la lista de tareas
Crearemos un almacenamiento de datos temporal en memoria (un array de objetos). En un proyecto real conectarías una base de datos, pero para una lección de 30 minutos esto es suficiente.
let tasks = [ { id: 1, title: 'Aprender Express', completed: false }, { id: 2, title: 'Escribir API', completed: true }];
let nextId = 3;Ahora implementamos cuatro rutas principales:
GET /tasks — Obtener todas las tareas
app.get('/tasks', (req, res) => { res.json(tasks);});POST /tasks — Crear una nueva tarea
app.post('/tasks', (req, res) => { const { title } = req.body; if (!title) { return res.status(400).json({ error: 'El título de la tarea es obligatorio' }); } const newTask = { id: nextId++, title, completed: false }; tasks.push(newTask); res.status(201).json(newTask);});PUT /tasks/:id — Actualizar una tarea
app.put('/tasks/:id', (req, res) => { const id = parseInt(req.params.id); const { title, completed } = req.body; const task = tasks.find(t => t.id === id); if (!task) { return res.status(404).json({ error: 'Tarea no encontrada' }); } if (title !== undefined) task.title = title; if (completed !== undefined) task.completed = completed; res.json(task);});DELETE /tasks/:id — Eliminar una tarea
app.delete('/tasks/:id', (req, res) => { const id = parseInt(req.params.id); const index = tasks.findIndex(t => t.id === id); if (index === -1) { return res.status(404).json({ error: 'Tarea no encontrada' }); } tasks.splice(index, 1); res.status(204).send();});Paso 4: Prueba de la API
Ahora que todas las rutas están listas, reinicia el servidor y prueba los endpoints. Puedes usar Postman, Insomnia o simplemente curl en la terminal.
Ejemplo de solicitud GET:
curl http://localhost:3000/tasksEjemplo de solicitud POST para crear una tarea:
curl -X POST http://localhost:3000/tasks \ -H "Content-Type: application/json" \ -d '{"title": "Nueva tarea"}'Ejemplo de solicitud PUT para actualizar:
curl -X PUT http://localhost:3000/tasks/1 \ -H "Content-Type: application/json" \ -d '{"completed": true}'Ejemplo de solicitud DELETE:
curl -X DELETE http://localhost:3000/tasks/1Conclusión: ¿Qué sigue?
Has creado un REST API completamente funcional en JavaScript en solo 30 minutos. Este es un excelente comienzo. Para el desarrollo de APIs reales, vale la pena considerar:
- Base de datos: Reemplaza el almacenamiento en memoria por MongoDB, PostgreSQL o SQLite.
- Validación: Usa bibliotecas como Joi o express-validator para verificar los datos de entrada.
- Autenticación: Añade JWT-tokens para proteger las rutas.
- Estructura del proyecto: Divide el código en controladores, modelos y rutas para mejorar la mantenibilidad.
El código completo de este artículo está disponible en GitHub. ¡Escribe, prueba y desarrolla tus propias APIs!