¡Hola, compañeros desarrolladores! Hoy, nos sumergimos en el mundo de la creación de APIs utilizando Node.js, Express y Axios. Tanto si eres un programador experimentado como si estás empezando, esta publicación te guiará a través de la creación de APIs robustas de manera eficiente. Además, te presentaré una increíble herramienta, Apidog, que agilizará tu proceso de pruebas y documentación de APIs.
Introducción
Las APIs (Interfaces de Programación de Aplicaciones) se han convertido en la columna vertebral de las aplicaciones web modernas. Permiten que diferentes sistemas de software se comuniquen y compartan datos sin problemas. Ya sea que estés desarrollando una aplicación web, una aplicación móvil o incluso una aplicación de escritorio, las APIs son esenciales.
¿Por qué Node.js, Express y Axios?
Node.js, Express y Axios son un trío dinámico cuando se trata de construir y consumir APIs. Aquí está el por qué:
- Node.js: Conocido por su arquitectura sin bloqueo y basada en eventos, Node.js es perfecto para crear aplicaciones de red escalables.
- Express: Este marco de aplicación web Node.js mínimo y flexible proporciona un conjunto robusto de características para desarrollar aplicaciones web y móviles.
- Axios: Un cliente HTTP basado en promesas para el navegador y Node.js, Axios facilita el envío de solicitudes HTTP asíncronas a los puntos finales REST y la realización de operaciones CRUD.
Al combinar estas tres poderosas herramientas, puedes construir APIs eficientes, escalables y fáciles de mantener.
Configurando Tu Entorno
Antes de sumergirnos en el código, configuremos nuestro entorno. Necesitarás Node.js y npm (Node Package Manager) instalados en tu máquina.
- Instala Node.js y npm: Dirígete al sitio web de Node.js y descarga la última versión. npm viene incluido con Node.js.
- Inicializa un nuevo proyecto: Abre tu terminal y ejecuta:
mkdir nodejs-express-axios-api
cd nodejs-express-axios-api
npm init -y
Esto creará un nuevo directorio e inicializará un nuevo proyecto Node.js con un archivo package.json
predeterminado.
- Instala Express y Axios:
npm install express axios
Creando Tu Primera API con Node.js y Express
Ahora que nuestro entorno está configurado, creemos una API simple.
Configurando Express
Primero, necesitamos configurar nuestro servidor Express. Crea un archivo llamado server.js
y agrega el siguiente código:
const express = require('express');
const app = express();
const PORT = 3000;
// Middleware to parse JSON
app.use(express.json());
// Start the server
app.listen(PORT, () => {
console.log(`Server is running on http://localhost:${PORT}`);
});
Definiendo Puntos Finales de la API
A continuación, definamos algunos puntos finales de la API. Crearemos puntos finales para una aplicación CRUD simple que gestione una lista de libros.
- Crear un Libro: Este punto final permitirá a los usuarios agregar un nuevo libro a la lista.
- Leer Libros: Este punto final devolverá la lista de todos los libros.
- Actualizar un Libro: Este punto final permitirá a los usuarios actualizar los detalles de un libro existente.
- Eliminar un Libro: Este punto final permitirá a los usuarios eliminar un libro de la lista.
Agrega el siguiente código a server.js
:
let books = [];
// Create a Book
app.post('/books', (req, res) => {
const book = req.body;
books.push(book);
res.status(201).send('Book added successfully');
});
// Read Books
app.get('/books', (req, res) => {
res.json(books);
});
// Update a Book
app.put('/books/:id', (req, res) => {
const bookId = req.params.id;
const updatedBook = req.body;
books = books.map(book => book.id === bookId ? updatedBook : book);
res.send('Book updated successfully');
});
// Delete a Book
app.delete('/books/:id', (req, res) => {
const bookId = req.params.id;
books = books.filter(book => book.id !== bookId);
res.send('Book deleted successfully');
});
Ejecutando Tu API
Para ejecutar tu API, simplemente usa el siguiente comando en tu terminal:
node server.js
Deberías ver el mensaje: Server is running on http://localhost:3000
.
Consumiendo APIs con Axios
Ahora que tenemos nuestra API en funcionamiento, aprendamos cómo consumirla usando Axios.
Haciendo Solicitudes HTTP con Axios
Axios facilita el envío de solicitudes HTTP asíncronas a los puntos finales REST y la realización de operaciones CRUD. Demostraremos cómo realizar cada operación (Crear, Leer, Actualizar, Eliminar) usando Axios.
Primero, instala Axios en tu proyecto si aún no lo has hecho:
npm install axios
Ejemplo: Usando Axios para Interactuar con Nuestra API de Libros
Crea un nuevo archivo llamado client.js
y agrega el siguiente código:
const axios = require('axios');
const API_URL = 'http://localhost:3000/books';
// Create a new book
const createBook = async (book) => {
try {
const response = await axios.post(API_URL, book);
console.log(response.data);
} catch (error) {
console.error(error);
}
};
// Read all books
const getBooks = async () => {
try {
const response = await axios.get(API_URL);
console.log(response.data);
} catch (error) {
console.error(error);
}
};
// Update a book
const updateBook = async (bookId, updatedBook) => {
try {
const response = await axios.put(`${API_URL}/${bookId}`, updatedBook);
console.log(response.data);
} catch (error) {
console.error(error);
}
};
// Delete a book
const deleteBook = async (bookId) => {
try {
const response = await axios.delete(`${API_URL}/${bookId}`);
console.log(response.data);
} catch (error) {
console.error(error);
}
};
// Usage examples
const newBook = { id: '1', title: 'Node.js for Beginners', author: 'John Doe' };
createBook(newBook);
getBooks();
updateBook('1', { id: '1', title: 'Advanced Node.js', author: 'John Doe' });
deleteBook('1');
Explicación
- createBook: Envía una solicitud POST para agregar un nuevo libro.
- getBooks: Envía una solicitud GET para recuperar todos los libros.
- updateBook: Envía una solicitud PUT para actualizar un libro existente.
- deleteBook: Envía una solicitud DELETE para eliminar un libro.
Uso Avanzado de Axios y Manejo de Errores
El manejo de errores es crucial cuando se trata de solicitudes HTTP. Axios proporciona varias formas de manejar los errores de manera efectiva.
Manejo de Errores
Modifica el archivo client.js
para manejar los errores de manera más elegante:
const axios = require('axios');
const API_URL = 'http://localhost:3000/books';
// Create a new book
const createBook = async (book) => {
try {
const response = await axios.post(API_URL, book);
console.log(response.data);
} catch (error) {
handleError(error);
}
};
// Read all books
const getBooks = async () => {
try {
const response = await axios.get(API_URL);
console.log(response.data);
} catch (error) {
handleError(error);
}
};
// Update a book
const updateBook = async (bookId, updatedBook) => {
try {
const response = await axios.put(`${API_URL}/${bookId}`, updatedBook);
console.log(response.data);
} catch (error) {
handleError(error);
}
};
// Delete a book
const deleteBook = async (bookId) => {
try {
const response = await axios.delete(`${API_URL}/${bookId}`);
console.log(response.data);
} catch (error) {
handleError(error);
}
};
// Error handling function
const handleError = (error) => {
if (error.response) {
// The request was made and the server responded with a status code
console.error('Error:', error.response.data);
console.error('Status:', error.response.status);
console.error('Headers:', error.response.headers);
} else if (error.request) {
// The request was made but no response was received
console.error('Error: No response received', error.request);
} else {
// Something happened in setting up the request
console.error('Error:', error.message);
}
};
Estableciendo Encabezados Personalizados e Interceptores
Axios te permite establecer encabezados personalizados e interceptar solicitudes o respuestas. Esto puede ser útil para agregar tokens de autenticación o registro.
const axios = require('axios');
const API_URL = 'http://localhost:3000/books';
// Axios instance with custom headers
const axiosInstance = axios.create({
baseURL: API_URL,
headers: { 'Authorization': 'Bearer YOUR_TOKEN_HERE' }
});
// Request interceptor
axiosInstance.interceptors.request.use(config => {
console.log('Request sent at:', new Date().toISOString());
return config;
}, error => {
return Promise.reject(error);
});
// Response interceptor
axiosInstance.interceptors.response.use(response => {
console.log('Response received at:', new Date().toISOString());
return response;
}, error => {
return Promise.reject(error);
});
// Example usage with interceptors
const getBooks = async () => {
try {
const response = await axiosInstance.get('/');
console.log(response.data);
} catch (error) {
console.error(error);
}
};
getBooks
();
Probando y Documentando Tu API con APIdog
Probar y documentar tus APIs es crucial para asegurar que funcionen como se espera y sean fáciles de usar para otros desarrolladores. Aquí es donde entra APIdog.
¿Qué es Apidog?
APIdog es una poderosa herramienta que te ayuda a probar y documentar tus APIs sin esfuerzo. Con APIdog, puedes crear documentación completa de la API, realizar pruebas automatizadas y compartir tus APIs con tu equipo.
Probando la API con Apidog
Repasemos un breve tutorial sobre cómo usar Apidog para hacer una solicitud [post].
Paso 1: Abre Apidog y crea una nueva solicitud.
- Inicia Apidog y selecciona Nueva Solicitud

Paso 2: Ingresa la API
- Encuentra o ingresa manualmente los detalles de la API para la solicitud POST que deseas realizar.

Paso 3: Ingresa los Parámetros
- Completa los parámetros requeridos y cualquier dato que desees incluir en el cuerpo de la solicitud.

Usar Apidog puede ahorrarte tiempo y esfuerzo al trabajar con solicitudes POST.
Documentando Nuestra API con Apidog
Para generar fácilmente la documentación de la API, simplemente sigue estas guías paso a paso:
Paso 1: Regístrate en Apidog
Para comenzar a usar Apidog para la documentación de la API, crea una cuenta e inicia sesión. Al iniciar sesión, serás redirigido al Centro de Proyectos, donde puedes seleccionar el proyecto predeterminado o crear uno nuevo.

Paso 2: Crea una Nueva API
Tu proyecto de API constará de múltiples puntos finales. Agrega un punto final haciendo clic en el botón "+" o en "Agregar Punto Final" dentro de tu proyecto.

Paso 3: Completa la Información de la API
Proporciona detalles como la URL del punto final, la descripción y los detalles de solicitud/respuesta. La documentación de los puntos finales incluye:
- Especificar el método HTTP (GET, POST, PUT, DELETE, etc.) y la ruta de solicitud de la API
- Definir los parámetros de solicitud (nombres, tipos, descripciones)
- Describir las respuestas esperadas (códigos de estado, formatos, ejemplos de respuestas)

Paso 4: Guarda la Documentación de la API
Después de ingresar la información necesaria, haz clic en "Guardar" para guardar la documentación de la API.

Paso 5: Prueba la API Directamente desde el Documento de la API en Línea
Una vez que guardes la documentación de la API, habrá una opción para "Ejecutar" tu API. Al hacer clic en el botón "Ejecutar", se enviará una solicitud de API y se obtendrá la respuesta para que pruebes los puntos finales. Durante este proceso, puedes identificar cualquier error y problema que deba abordarse.

Una vez que la documentación de la API satisfaga las necesidades comerciales, puedes compartirla con otros a través de un solo enlace.
Beneficios de Generar Documentación de API en Línea Usando Apidog
- Depuración en Línea: Depura fácilmente las APIs directamente dentro de la documentación haciendo clic en el botón "Ejecutar", lo que permite pruebas rápidas y eficientes.

- Generación Automática de Documentación: Genera automáticamente documentación completa de la API completando la información necesaria, eliminando la necesidad de una extensa configuración manual.
- Generación de Código: Genera instantáneamente código de modelo de solicitud y respuesta en varios idiomas, como JavaScript, con opciones para Fetch, Axios y JQuery, etc., simplificando el proceso de desarrollo.

- Cloud Mock: Utiliza Cloud Mock para simular servicios de backend y crear servidores virtuales para pruebas sin restricciones, mejorando la flexibilidad y reduciendo la dependencia de los servicios de backend reales.
Conclusión
¡Felicitaciones! Has construido con éxito una API robusta utilizando Node.js, Express y Axios. También has aprendido cómo consumir APIs con Axios, manejar errores de manera efectiva y mejorar tus pruebas y documentación de APIs con APIdog.
Las APIs son la columna vertebral del desarrollo web moderno, y dominar estas herramientas te encaminará hacia la creación de aplicaciones potentes y escalables. No olvides descargar APIdog gratis para agilizar tu proceso de desarrollo y pruebas de APIs.