Node.js: así funciona la nuevo API Fetch

August 05, 2022

Tags: Tecnologías

nodejs

 

Fetch API es una interfaz disponible para javascript en cualquiera de los browsers modernos que implementa una especificación por el mismo nombre.

 

Este API nos permite de manera bien sencilla hacer solicitudes al dominio que deseemos por medio de string urls enviados como argumento. Similar a cualquier librería cliente, el Fetch API utiliza los conceptos de request y response para describir las fases de ejecución.

 

Por medio de las promesas somos capaces de enviar un request y después recibir el response de manera asíncrona para luego continuar procesando esa data como se quiera. A continuación se presenta un ejemplo bien sencillo que hace una solicitud en unas cuantas líneas de código:

 

fetch("http://example.com/api/endpoint")

  .then((response) => {

    // Do something with response

  })

  .catch(function (err) {

    console.log("Unable to fetch -", err);

  });


Además de esta forma sencilla de ejecución podemos utilizar overloads de la misma función que nos permite enviar un objeto de configuración para modificar cómo se debería ejecutar fetch.

 

Fetch API para Nodejs

 

De la misma manera Fetch API en Nodejs sigue la misma especificación que en los browsers y por lo tanto es compatible y sigue los mismos sintaxis que ya conocemos. Como parte del runtime de Nodejs es incluida de manera experimental y también existe un paquete que implementa el mismo estándar el cual podemos instalar de la siguiente manera:

 

npm install node-fetch

 

Como usarlo

 

Módulo ES

 

import fetch from 'node-fetch';

 

CommonJS

 

npm install node-fetch@2

 

Acceso global en browsers

 

Para usar Fetch como polyfill sin importar puedes usar:

 

// fetch-polyfill.js

import fetch, {

  Blob,

  blobFrom,

  blobFromSync,

  File,

  fileFrom,

  fileFromSync,

  FormData,

  Headers,

  Request,

  Response,

} from 'node-fetch'


if (!globalThis.fetch) {

  globalThis.fetch = fetch

  globalThis.Headers = Headers

  globalThis.Request = Request

  globalThis.Response = Response

}


// index.js

import './fetch-polyfill'

 

Typescript

 

Si estás utilizando typescript no olvides instalar sus @types con:

 

npm install --save @types/node-fetch

 

next.js

 

Beneficios de usar la Fetch API en Node.Js

 

No hay que instalar otra librería de requests genérica, inclusive no se tiene que instalar un paquete asumiendo que este activo el modo experimental.

 

Multiplataforma

 

Si ya un desarrollador tiene experiencia utilizando la Fetch API, no tendrá problemas en utilizar el feature con Node.js. En cambio, trabajará en un ambiente simple e intuitivo, al contrario de usar paquetes externos para lograr la misma funcionalidad.

 

Rápida implementación

 

Fetch se basa en Undici, un cliente HTTP conocido por su rapidez, confiabilidad y compatibilidad con todas las especificaciones de Node.js. Esto anticipa un rendimiento mejorado de la Fetch API.

 

En LogRocket comentan “En general, es emocionante que Fetch finalmente llegue al core de Node.js, ya que esta ha sido una solicitud de mucho tiempo de la comunidad de desarrolladores. Puede tomar un tiempo (alrededor de uno o dos años) para que Fetch API sea completamente estable en Node.js, ya que aún queda mucho por hacer para que cumpla con los estándares. También se esperan muchas actualizaciones interesantes en un futuro próximo, una de las cuales incluye la adición de compatibilidad con HTTP/2 a Undici y, finalmente, la propia Fetch API”.

 

Te recomendamos en video