Tutoriales 11 min de lectura

Cómo crear una API custom para tu negocio

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
  1. Crea archivo .env con: PORT=3000, JWT_SECRET=tu_secreto_muy_largo_y_aleatorio
  2. 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 };
  1. En tus rutas protegidas: usa authenticateToken como middleware
  2. Para login: verifica credenciales y retorna jwt.sign({userId: id}, process.env.JWT_SECRET, {expiresIn: '24h'})

Paso 4 — Documentar con Swagger y hacer deployment

  1. Instala swagger-ui-express y swagger-jsdoc para documentación automática
  2. Agrega comentarios JSDoc en tus routes con formato OpenAPI
  3. Deployment en Railway: conecta tu repositorio de GitHub y Railway hace deploy automático en cada push
  4. 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.

Preguntas frecuentes

¿Cuándo necesita un negocio crear su propia API?

Cuando necesitas: conectar múltiples sistemas que deben compartir datos (sitio web + app móvil + CRM), crear integraciones con herramientas externas que no tienen conector nativo, exponer datos de tu ERP o sistema interno a partners, o construir automatizaciones complejas que van más allá de lo que Zapier/Make pueden hacer nativamente.

¿Node.js es la mejor opción para una API de negocio?

Node.js + Express es una excelente opción por: ecosistema npm masivo, async nativo perfecto para APIs, amplia comunidad, y developers abundantes. Alternativas: Python + FastAPI (mejor para APIs con AI/ML), Go (mejor performance para alto tráfico), PHP + Laravel (si tu equipo ya conoce PHP). Para la mayoría de PyMEs: Node.js o Python son las mejores opciones por facilidad de contratación de developers.

¿Cómo asegurar una API para que no sea accesible públicamente?

Múltiples capas de seguridad: 1) JWT o API Keys para autenticación de todos los endpoints, 2) HTTPS obligatorio (no permitir HTTP), 3) Rate limiting para prevenir abuso, 4) CORS configurado para solo permitir dominios específicos, 5) Validación de inputs para prevenir SQL injection y XSS, 6) Variables de entorno para secrets (nunca en el código). Las 6 capas juntas cubren los vectores de ataque más comunes.

¿Cuánto cuesta hacer deployment de una API Node.js?

Railway (plan Starter): $5 USD/mes con $5 de créditos de compute. Render: plan gratuito disponible (se duerme después de 15 min de inactividad, no apto para producción) o plan Starter $7/mes. DigitalOcean App Platform: $5/mes. Para APIs de producción con uptime garantizado: $5-10 USD/mes es suficiente para PyMEs. El free tier de Railway cubre desarrollo y pruebas perfectamente.

¿Necesito base de datos para mi API?

Depende del uso. Para API que solo lee de un archivo JSON o una fuente de datos existente: no necesariamente. Para API que crea, actualiza y elimina datos: sí necesitas base de datos. Opciones económicas: PostgreSQL en Railway o Render (gratuito hasta 1 GB), MongoDB Atlas (gratuito hasta 512 MB), PlanetScale (MySQL serverless, plan gratuito disponible). Prisma ORM facilita el trabajo con cualquiera de estas bases de datos desde Node.js.