Llamar a un punto final de API es la funcionalidad principal de la tecnología de Internet moderna. Por lo general, llamamos a la API desde el navegador. A veces necesitamos llamar al punto final de la API desde el propio servidor para obtener datos, cargar dependencias, etc.
Hay muchas formas de llamar a la API desde el propio servidor NodeJS, según el nivel de abstracción que desee utilizar. La forma más sencilla de llamar a una API desde el servidor NodeJS es usar la biblioteca Axios.
Configuración del proyecto: cree un proyecto de NodeJS e inicialícelo con el siguiente comando.
mkdir Project && cd Project npm init -y
Instalación del módulo: instale los módulos necesarios, es decir, ExpressJS y Axios, utilizando el siguiente comando.
npm i express axios
Ahora cree un archivo JS en la carpeta raíz de su proyecto y asígnele el nombre index.js
1. Realice una solicitud HTTP GET: escriba el siguiente código en su archivo index.js .
index.js
const express = require('express') const axios = require('axios') const app = express() // Post ID tracker var num = 0 setInterval(() => { // Increment post tracker num++ console.log('Wait for 2 second...') // Make GET Request on every 2 second axios.get( `https://jsonplaceholder.typicode.com/posts/${num}`) // Print data .then(response => { const { id, title } = response.data console.log(`Post ${id}: ${title}\n`) }) // Print error message if occur .catch(error => console.log( 'Error to fetch data\n')) }, 2000)
Explicación: En el ejemplo anterior, NodeJS llama a una API en intervalos de 2 segundos para obtener datos. Si se resuelve la promesa, el bloque se ejecutará e imprimirá datos. Si se rechaza una promesa, se ejecutará el bloque catch e imprimirá un mensaje de error.
Ejecute el servidor usando el siguiente comando:
node index.js
Producción:
2. Realice una solicitud HTTP POST: escriba el siguiente código en el archivo index.js .
index.js
const express = require('express') const axios = require('axios') const app = express() // Dummy database const posts = [ { title: 'Headline 1', id: 1, body: `sint suscipit perspiciatis velit dolorum rerum ipsa laboriosam odio`, userId: 1 }, { title: 'Headline 2', id: 2, body: "fugit voluptas sed molestias voluptatem provident", userId: 1 }, { title: 'Headline 3', id: 3, body: "voluptate et itaque vero tempora molestiae", userId: 1 } ] // Loop over the posts posts.forEach(post => { // Post data to API endpoint axios.post('https://jsonplaceholder.typicode.com/posts/', { body: post, }) // Print response .then(response => { const { id, title } = response.data.body console.log(`Post ${id}: ${title}`) }) // Print error message if occur .catch(error => console.log(error)) })
Explicación: En el ejemplo anterior, hemos creado datos de usuario ficticios. NodeJS realiza una solicitud POST para enviar estos datos al extremo de la API e imprimir los datos de la respuesta o el mensaje de error.
Ejecute el servidor usando el siguiente comando:
node index.js
Producción: