Qué vas a lograr
Una API REST funcional que expone los datos de tu negocio de forma segura. Por ejemplo: un endpoint que retorna los pedidos de tu tienda, otro que crea cotizaciones, y otro que consulta el estado de un servicio. Tu sitio web, app móvil y herramientas de automatización pueden consumir esta API.
Requisitos previos
- Node.js 18+ instalado localmente
- npm o yarn para gestión de dependencias
- Conocimiento básico de JavaScript (async/await, JSON)
- Cuenta en Railway, Render o Heroku para deployment (planes gratuitos disponibles)
- Postman o Insomnia para probar la API
Paso 1 — Inicializar el proyecto Node.js
mkdir mi-api-negocio && cd mi-api-negocio
npm init -y
npm install express cors dotenv jsonwebtoken bcryptjs
npm install -D nodemon- Crea archivo .env con: PORT=3000, JWT_SECRET=tu_secreto_muy_largo_y_aleatorio
- Estructura de carpetas: src/routes/, src/controllers/, src/middleware/, src/models/
Paso 2 — Crear el servidor Express básico
// src/app.js
const express = require('express');
const cors = require('cors');
require('dotenv').config();
const app = express();
app.use(cors());
app.use(express.json());
// Health check
app.get('/health', (req, res) => res.json({ status: 'ok' }));
// Rutas
app.use('/api/v1/productos', require('./routes/productos'));
app.use('/api/v1/cotizaciones', require('./routes/cotizaciones'));
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => console.log(`API corriendo en puerto ${PORT}`));Paso 3 — Implementar autenticación JWT
// src/middleware/auth.js
const jwt = require('jsonwebtoken');
const authenticateToken = (req, res, next) => {
const token = req.headers.authorization?.split(' ')[1];
if (!token) return res.status(401).json({ error: 'Token requerido' });
try {
req.user = jwt.verify(token, process.env.JWT_SECRET);
next();
} catch (err) {
return res.status(403).json({ error: 'Token inválido' });
}
};
module.exports = { authenticateToken };- En tus rutas protegidas: usa authenticateToken como middleware
- Para login: verifica credenciales y retorna jwt.sign({userId: id}, process.env.JWT_SECRET, {expiresIn: '24h'})
Paso 4 — Documentar con Swagger y hacer deployment
- Instala swagger-ui-express y swagger-jsdoc para documentación automática
- Agrega comentarios JSDoc en tus routes con formato OpenAPI
- Deployment en Railway: conecta tu repositorio de GitHub y Railway hace deploy automático en cada push
- Variables de entorno en Railway: Settings → Variables → agrega PORT, JWT_SECRET y cualquier otra variable
Verificación y troubleshooting
- Prueba cada endpoint en Postman antes de marcar como completo
- Error CORS: verifica que el middleware cors() está configurado antes de las rutas
- JWT expirado: implementa refresh token o endpoints para renovar el token automáticamente
- API lenta: agrega índices a tu base de datos, implementa paginación en endpoints que retornan listas grandes
Próximos pasos y optimización
- Base de datos: integra PostgreSQL via Prisma ORM o MongoDB via Mongoose para persistencia de datos
- Rate limiting: instala express-rate-limit para proteger tu API de abuso
- Monitoreo: integra Sentry para tracking de errores en producción
En Weblindrome ofrecemos Desarrollo web para ayudarte con esta y otras implementaciones. Solicita una cotización personalizada.