5-2-solo API

 versión solo API (sin HTML, sin interfaz web), únicamente los tres métodos con JSON.

📄 Código app.js (API pura)

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

// Middleware para leer JSON en el body de POST
app.use(express.json());

// Arreglo de productos (base de datos en memoria)
let productos = [
  { id: 1, nombre: 'Laptop', precio: 1000 },
  { id: 2, nombre: 'Mouse', precio: 25 },
  { id: 3, nombre: 'Teclado', precio: 50 }
];

// 1. GET - Obtener todos los productos
app.get('/productos', (req, res) => {
  res.json(productos);
});

// 2. GET - Obtener un producto por ID
app.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);
});

// 3. POST - Crear un nuevo producto
app.post('/productos', (req, res) => {
  const { nombre, precio } = req.body;
  if (!nombre || typeof precio !== 'number') {
    return res.status(400).json({ error: 'Faltan nombre o precio (precio debe ser número)' });
  }
  const nuevoId = productos.length > 0 ? Math.max(...productos.map(p => p.id)) + 1 : 1;
  const nuevoProducto = { id: nuevoId, nombre, precio };
  productos.push(nuevoProducto);
  res.status(201).json(nuevoProducto);
});

// Iniciar servidor
app.listen(PORT, () => {
  console.log(`API corriendo en http://localhost:${PORT}`);
  console.log('Endpoints:');
  console.log('  GET    /productos       → Obtener todos');
  console.log('  GET    /productos/:id   → Obtener uno por ID');
  console.log('  POST   /productos       → Crear producto (JSON: {nombre, precio})');
});

▶️ Cómo probarlo (sin navegador, con herramientas API)

  • GET todos: http://localhost:3000/productos

  • GET por ID: http://localhost:3000/productos/2

  • POST crear (ejemplo con curl o Postman):

bash
curl -X POST http://localhost:3000/productos \
  -H "Content-Type: application/json" \
  -d '{"nombre":"Monitor","precio":200}'

✨ Características

  • Sin HTML, sin res.send con etiquetas.

  • Solo respuestas en JSON.

  • Middleware express.json() necesario para leer el body del POST.

  • Código corto, ideal para que los alumnos entiendan los endpoints puros.

Comentarios