Crear una API REST con Node.js y Express desde el chat de Cerewro

Genera un servidor Express completo con Cerewro: rutas GET/POST/PUT/DELETE, middleware de autenticación JWT, conexión a base de datos y documentación Swagger. De cero a producción en minutos.

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".