Crear un servicio de API con Node.js y Express es una tarea esencial y muy común en el desarrollo web. Este proceso permite integrar datos de servicios externos de manera eficiente en tus aplicaciones.
En esta guía, aprenderás paso a paso cómo construir una API desde cero utilizando Node.js y Express. Al finalizar, habrás creado tres endpoints funcionales para realizar operaciones clave: obtener, agregar y eliminar datos.
mkdir crear-api
cd crear-api
npm init -y npm install express touch index.js index.js:const express = require('express');
const app = express();
const PORT = 3000;
app.use(express.json()); // Middleware para parsear JSON
app.listen(PORT, () => {
console.log(`Servidor corriendo en http://localhost:${PORT}`);
}); const items = [
{ id: 1, name: 'Item 1' },
{ id: 2, name: 'Item 2' }
];
app.get('/items', (req, res) => {
res.json(items);
}); Para iniciar el servidor, utiliza uno de los siguientes comandos:
# Ejecuta el servidor una vez.
node index.js
# Ejecuta el servidor y reinicia automáticamente al detectar cambios en el archivo index.js
node --watch index.js visita la url http://localhost:3000/items en tu navegador o usando herramientas como Postman.
app.post('/items', (req, res) => {
const { name } = req.body;
if (!name) {
return res.status(400).json({ message: "El campo 'name' es requerido." });
}
const newItem = req.body;
newItem.id = items.length + 1;
items.push(newItem);
res.status(201).json(newItem);
}); {
"name": "Item 3"
} Usa Postman o cualquier cliente HTTP para probarlo.
app.delete('/items/:id', (req, res) => {
const itemId = parseInt(req.params.id);
const itemIndex = items.findIndex(item => item.id === itemId);
if (itemIndex >= 0) {
items.splice(itemIndex, 1);
res.status(204).send();
} else {
res.status(404).json({ message: 'Item no encontrado' });
}
}); http://localhost:3000/items/1 Código completo que muestra cómo crear una API REST básica usando Node.js y Express. Incluye endpoints para obtener, agregar y eliminar elementos, ideal para aprender lo esencial sobre servicios web.
const express = require("express");
const app = express();
const PORT = 3000;
app.use(express.json()); // Middleware para parsear JSON
const items = [
{ id: 1, name: "Item 1" },
{ id: 2, name: "Item 2" },
];
app.get("/items", (req, res) => {
res.json(items);
});
app.post("/items", (req, res) => {
const { name } = req.body;
if (!name) {
return res.status(400).json({ message: "El campo 'name' es requerido." });
}
const newItem = req.body;
newItem.id = items.length + 1;
items.push(newItem);
res.status(201).json(newItem);
});
app.delete("/items/:id", (req, res) => {
const itemId = parseInt(req.params.id);
const itemIndex = items.findIndex((item) => item.id === itemId);
if (itemIndex >= 0) {
items.splice(itemIndex, 1);
res.status(204).send();
} else {
res.status(404).json({ message: "Item no encontrado" });
}
});
app.listen(PORT, () => {
console.log(`Servidor corriendo en http://localhost:${PORT}`);
}); CORS en una API Node.js para permitir solicitudes externascors (Cross-Origin Resource Sharing) es un middleware que permite o restringe las solicitudes de recursos en función del origen del cliente.
Esto es útil para habilitar la comunicación entre el servidor y clientes alojados en diferentes dominios.
Para instalarlo, utiliza:
npm install cors const express = require("express");
const cors = require("cors"); // Importa cors
const app = express();
const PORT = 3000;
app.use(cors()); // Habilita CORS
app.use(express.json()); // Middleware para parsear JSON
const items = [
{ id: 1, name: "Item 1" },
{ id: 2, name: "Item 2" },
];
app.get("/items", (req, res) => {
res.json(items);
});
app.post("/items", (req, res) => {
const { name } = req.body;
if (!name) {
return res.status(400).json({ message: "El campo 'name' es requerido." });
}
const newItem = req.body;
newItem.id = items.length + 1;
items.push(newItem);
res.status(201).json(newItem);
});
app.delete("/items/:id", (req, res) => {
const itemId = parseInt(req.params.id);
const itemIndex = items.findIndex((item) => item.id === itemId);
if (itemIndex >= 0) {
items.splice(itemIndex, 1);
res.status(204).send();
} else {
res.status(404).json({ message: "Item no encontrado" });
}
});
app.listen(PORT, () => {
console.log(`Servidor corriendo en http://localhost:${PORT}`);
});