Introducción: ¿por qué necesita una API REST en JavaScript en 30 minutos?
\nEl desarrollo web moderno es impensable sin API (Application Programming Interface). REST (Representational State Transfer) es el estilo arquitectónico más popular para crear servicios web. Si desea aprender rápidamente el desarrollo backend o poner en marcha su primer servidor, JavaScript y Node.js son la elección ideal. En 30 minutos podrá crear una API REST completa que procese solicitudes, devuelva datos en formato JSON y funcione con una base de datos (en nuestro ejemplo, con un array simple en memoria).
\nEn este artículo analizaremos un ejemplo práctico: crearemos una API para gestionar una lista de tareas (To-Do list). Aprenderá a configurar el servidor, manejar solicitudes GET, POST, PUT y DELETE, y agregar validación básica. Al finalizar la lectura, tendrá un código listo que podrá ejecutar y probar de inmediato.
\n\nPaso 1: Configuración del proyecto e instalación de dependencias
\nAntes de escribir código, debe preparar el entorno. Asegúrese de tener instalado Node.js (puede descargarlo desde el sitio web oficial). Luego siga las instrucciones:
\n- \n
- Cree una nueva carpeta para el proyecto, por ejemplo
rest-api-todo. \n - Abra la terminal en esta carpeta y ejecute el comando
npm init -y; esto creará el archivopackage.json. \n - Instale Express, el framework más popular para Node.js:
npm install express. \n - Para mayor comodidad, instale
nodemoncomo dependencia de desarrollo:npm install --save-dev nodemon. Este reiniciará automáticamente el servidor cuando haya cambios en el código. \n
Después de la instalación, agregue el script de inicio en package.json:
"scripts": {\n "start": "node index.js",\n "dev": "nodemon index.js"\n}\n\nPaso 2: Creación del servidor básico con Express
\nAhora crearemos el archivo index.js; este será el punto de entrada de nuestra aplicación. En él configuraremos el servidor, conectaremos el middleware para trabajar con JSON y definiremos la primera ruta.
const express = require('express');\nconst app = express();\nconst PORT = 3000;\n\n// Middleware para parsear JSON\napp.use(express.json());\n\n// Almacenamiento temporal de datos (en lugar de una base de datos)\nlet tasks = [\n { id: 1, title: 'Aprender Express', completed: false },\n { id: 2, title: 'Escribir API REST', completed: false }\n];\nlet currentId = 3;\n\n// Ruta básica para verificar\napp.get('/', (req, res) => {\n res.send('¡API REST funcionando! Use /api/tasks');\n});\n\n// Inicio del servidor\napp.listen(PORT, () => {\n console.log(`Servidor iniciado en http://localhost:${PORT}`);\n});\nEjecute el servidor con el comando npm run dev y abra en el navegador http://localhost:3000. Debería ver el mensaje "¡API REST funcionando!".
Paso 3: Implementación de operaciones CRUD (GET, POST, PUT, DELETE)
\nAhora viene la parte más interesante: crearemos una API REST completa para gestionar tareas. Implementaremos cuatro métodos HTTP principales:
\n\n3.1. GET /api/tasks — obtener todas las tareas
\n// Obtener todas las tareas\napp.get('/api/tasks', (req, res) => {\n res.json(tasks);\n});\n\n3.2. GET /api/tasks/:id — obtener una tarea por ID
\n// Obtener tarea por ID\napp.get('/api/tasks/:id', (req, res) => {\n const id = parseInt(req.params.id);\n const task = tasks.find(t => t.id === id);\n \n if (!task) {\n return res.status(404).json({ message: 'Tarea no encontrada' });\n }\n res.json(task);\n});\n\n3.3. POST /api/tasks — crear una nueva tarea
\n// Crear nueva tarea\napp.post('/api/tasks', (req, res) => {\n const { title, completed } = req.body;\n \n // Validación\n if (!title || typeof title !== 'string') {\n return res.status(400).json({ message: 'El título de la tarea es obligatorio y debe ser una cadena