Crear una API REST con Node.js y Express desde Cerewro
Express es el framework web más popular del ecosistema Node.js. Con Cerewro puedes generar una API REST completa con autenticación, validación, base de datos y documentación Swagger en minutos, sin escribir código manualmente.
Estructura de un proyecto Express profesional
Cerewro Chat — Generar API REST completa
Crea una API REST con Node.js y Express para gestionar usuarios y productos: rutas CRUD completas, autenticación JWT, validación con Joi, conexión a SQLite y documentación Swagger en /api-docs
Estructura generada
mi-api/
├── src/
│ ├── routes/
│ │ ├── users.js
│ │ └── products.js
│ ├── middleware/
│ │ ├── auth.js ← verificar JWT
│ │ └── validate.js ← validar body con Joi
│ ├── models/
│ │ └── db.js ← conexión SQLite
│ └── index.js ← servidor principal
├── package.json
└── .env
index.js — Servidor Express
const express = require('express');
const cors = require('cors');
const helmet = require('helmet');
const swaggerUi = require('swagger-ui-express');
const usersRouter = require('./routes/users');
const productsRouter = require('./routes/products');
const swaggerDoc = require('./swagger.json');
const app = express();
app.use(helmet());
app.use(cors());
app.use(express.json());
app.use('/api/users', usersRouter);
app.use('/api/products', productsRouter);
app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDoc));
app.listen(3000, () => console.log('API en http://localhost:3000'));
Rutas CRUD completas
routes/products.js
const router = require('express').Router();
const auth = require('../middleware/auth');
const db = require('../models/db');
router.get('/', async (req, res) => { /* listar */ });
router.get('/:id', async (req, res) => { /* obtener uno */ });
router.post('/', auth, async (req, res) => { /* crear */ });
router.put('/:id', auth, async (req, res) => { /* actualizar */ });
router.delete('/:id', auth, async (req, res) => { /* eliminar */ });
module.exports = router;
Autenticación JWT
Flujo de autenticación con JWT
# Instalar dependencias
npm install express cors helmet jsonwebtoken bcryptjs joi dotenv
# Endpoints de auth:
POST /api/auth/register → registrar usuario (hash contraseña con bcrypt)
POST /api/auth/login → devuelve token JWT firmado
GET /api/users/me → ruta protegida (requiere Authorization: Bearer TOKEN)
Desplegar la API con PM2
Producción con PM2
npm install -g pm2
# Iniciar la API
pm2 start src/index.js --name "mi-api"
# Reiniciar automáticamente al reiniciar el servidor
pm2 startup
pm2 save
# Ver logs en tiempo real
pm2 logs mi-api
Alternativa rápida: Para proyectos pequeños, considera Fastify en lugar de Express: hasta 2x más rápido y con validación de esquemas nativa. Pide a Cerewro: "Convierte esta API de Express a Fastify".