8-Estructura final (API)-routes-ejs

 Vamos a crear una versión solo API (sin vistas EJS, solo respuestas JSON) manteniendo la misma estructura de productos. Usaremos express.Router() también para organizar las rutas API. Así de sencillo como el ejemplo original pero eliminando todo lo relacionado con EJS y archivos estáticos.

Entregaré:

  1. Estructura de proyecto simplificada.

  2. Código de app.js (servidor solo API).

  3. Router routes/api.js con endpoints JSON.

  4. Instrucciones de prueba.

No incluiré vistas, ni CSS, ni Bootstrap, ni archivos estáticos.

Perfecto. Aquí tienes una versión solo API (sin vistas, sin estáticos, solo JSON) igual de sencilla que tu ejemplo original, pero organizada con express.Router().

📁 Estructura del proyecto

text
mi-proyecto-api/
├── app.js
├── routes/
│   └── api.js
└── package.json

🔧 Código

1. routes/api.js – Router con los endpoints

javascript
const express = require('express');
const router = express.Router();

// Datos de ejemplo (simulan BD)
const productos = [
  { id: 1, nombre: 'Laptop', precio: 1000 },
  { id: 2, nombre: 'Mouse', precio: 25 },
  { id: 3, nombre: 'Teclado', precio: 50 }
];

// GET /api/productos → devuelve todos los productos
router.get('/productos', (req, res) => {
  res.json({
    success: true,
    cantidad: productos.length,
    productos: productos
  });
});

// GET /api/productos/:id → devuelve un producto por ID
router.get('/productos/:id', (req, res) => {
  const id = parseInt(req.params.id);
  const producto = productos.find(p => p.id === id);

  if (!producto) {
    return res.status(404).json({ error: 'Producto no encontrado' });
  }

  res.json(producto);
});

module.exports = router;

2. app.js – Servidor principal (solo API)

javascript
const express = require('express');
const app = express();
const PORT = 3000;

// Importar el router de API
const apiRouter = require('./routes/api');

// Montar el router bajo el prefijo /api
app.use('/api', apiRouter);

// Ruta de bienvenida opcional
app.get('/', (req, res) => {
  res.json({ mensaje: 'API de productos funcionando', endpoints: ['/api/productos', '/api/productos/:id'] });
});

// Iniciar servidor
app.listen(PORT, () => {
  console.log(`🚀 API corriendo en http://localhost:${PORT}`);
  console.log(`📦 Listar productos: http://localhost:${PORT}/api/productos`);
  console.log(`🔍 Un producto: http://localhost:${PORT}/api/productos/1`);
});

3. package.json (mínimo)

json
{
  "name": "mi-proyecto-api",
  "version": "1.0.0",
  "description": "API simple con Express y Router",
  "main": "app.js",
  "scripts": {
    "start": "node app.js"
  },
  "dependencies": {
    "express": "^4.18.2"
  }
}

🧪 ¿Cómo probar?

  1. Instala Express:

    bash
    npm init -y
    npm install express
  2. Crea la carpeta routes y dentro el archivo api.js con el código de arriba.

  3. Crea app.js tal como se muestra.

  4. Ejecuta:

    bash
    node app.js
  5. Prueba los endpoints con el navegador o con curl:

    • http://localhost:3000/ → mensaje de bienvenida

    • http://localhost:3000/api/productos → lista completa JSON

    • http://localhost:3000/api/productos/2 → producto con id=2

    • http://localhost:3000/api/productos/99 → error 404 con JSON

✅ Características de esta versión solo API

  • Sin vistas EJS, sin CSS, sin Bootstrap.

  • Todo es JSON.

  • Usa express.Router() para organizar rutas.

  • Respuestas limpias con códigos HTTP adecuados (200, 404).

  • Fácil de extender: puedes agregar POST, PUT, DELETE en el mismo router.

¿Necesitas que añada algún otro endpoint (por ejemplo, POST para crear producto)? Con gusto lo agrego.

Comentarios

Entradas más populares de este blog

Cómo Iniciar un Proyecto Node.js

5-Express--Curso de Node.js#05 Introducción a Express.js

8-Template Engines