Cómo Consumir una API en Node.js y Express

Consumir una API en Node.js y Express es fundamental para integrar datos de servicios externos en tus aplicaciones web. En esta guía, aprenderás a realizar solicitudes HTTP utilizando librerías como Axios y Fetch, y cómo manejar las respuestas de manera eficiente para interactuar con APIs RESTful y otros servicios externos.

Conceptos básicos

Consumir una API significa obtener datos de un servidor externo. En este proceso:

  • Petición (Request): Se envía una solicitud al servidor con información, como la URL, método HTTP (GET, POST, etc.), y en algunos casos un cuerpo o encabezados.
  • Respuesta (Response): El servidor devuelve datos, normalmente en formato JSON, junto con un código de estado HTTP.
  Métodos HTTP más comunes

  • GET: Obtener datos.
  • POST: Enviar datos.
  • PUT/PATCH: Actualizar datos.
  • DELETE: Eliminar datos.

Configuración del proyecto

1Crea una nueva carpeta para tu proyecto y ejecuta:
bash
mkdir consumir-api 
cd consumir-api
npm init -y
2Instala Express y dependencias necesarias:
bash
npm install express node-fetch axios
3Crea el archivo principal:
bash
touch index.js

Consumir una API con fetch

1Importa node-fetch para realizar solicitudes HTTP:
javascript
const fetch = require('node-fetch');
2Escribe una función para consumir datos:
javascript
async function fetchPosts() {
   try {
     const response = await fetch('https://jsonplaceholder.typicode.com/posts');
     const posts = await response.json();
     console.log(posts);
   } catch (error) {
     console.error('Error al consumir la API:', error);
   }
 }

 fetchPosts();
2Integra la lógica en un endpoint de Express:
javascript
const express = require('express');
 const app = express();
 const PORT = 3000;

 app.get('/posts', async (req, res) => {
   try {
     const response = await fetch('https://jsonplaceholder.typicode.com/posts');
     const posts = await response.json();
     res.json(posts);
   } catch (error) {
     res.status(500).json({ message: 'Error al consumir la API' });
   }
 });

 app.listen(PORT, () => console.log(`Servidor corriendo en http://localhost:${PORT}`));

Consumir una API con axios

1Importa axios para realizar solicitudes HTTP:
javascript
const axios = require('axios');
2Escribe una función para consumir datos:
javascript
async function fetchUsers() {
   try {
     const response = await axios.get('https://jsonplaceholder.typicode.com/users');
     console.log(response.data);
   } catch (error) {
     console.error('Error al consumir la API:', error);
   }
 }

 fetchUsers();
2Integra la lógica en un endpoint de Express:
javascript
app.get('/users', async (req, res) => {
   try {
     const response = await axios.get('https://jsonplaceholder.typicode.com/users');
     res.json(response.data);
   } catch (error) {
     res.status(500).json({ message: 'Error al consumir la API' });
   }
 });

Ejemplo completo

Archivo index.js con ambas implementaciones:

javascript
const express = require('express');
const fetch = require('node-fetch');
const axios = require('axios');

const app = express();
const PORT = 3000;

// Endpoint usando node-fetch
app.get('/posts', async (req, res) => {
try {
  const response = await fetch('https://jsonplaceholder.typicode.com/posts');
  const posts = await response.json();
  res.json(posts);
} catch (error) {
  res.status(500).json({ message: 'Error al consumir la API' });
}
});

// Endpoint usando axios
app.get('/users', async (req, res) => {
try {
  const response = await axios.get('https://jsonplaceholder.typicode.com/users');
  res.json(response.data);
} catch (error) {
  res.status(500).json({ message: 'Error al consumir la API' });
}
});

app.listen(PORT, () => console.log(`Servidor corriendo en http://localhost:${PORT}`));
  Conclusión

Consumir una API desde Node.js y Express es una tarea sencilla y flexible con herramientas como node-fetch o axios.

Recursos adicionales