Estaré compartiendo regularmente pequeños aprendizajes acerca de JavaScript en estas series. Cubriremos fundamentos de JS, navegadores, DOM, diseño de sistema, arquitectura de dominio y frameworks.
Fetch es una interfaz para hacer solicitudes AJAX en JavaScript. Actualmente es ampliamente implementado por los navegadores modernos y es usado generalmente para hacer una solicitud a un API.
const promesa = fetch(url, [options]);
Una solicitud fetch regresa una promesa, la cual es un objeto del tipo Promesa (promise), que finalmente resolverá con un objeto del tipo Response. La promesa será rechazada si sucede un error de red, y será resuelta si no hay problema conectando al servidor y el servidor responde con algún código de estatus. Este estatus podría ser 200´s, 400´s o 500´s.
Ejemplo de solicitud fetch:
fetch(url)
.then(response => response.json())
.catch(err => console.log(err))
La solicitud es enviada con el método GET por defecto. Para enviar una solicitud del tipo POST / PATCH / DELETE / PUT, se debe utilizar la propiedad method
como parte del parámetro options
. Algunos otros valores posibles para options
son:
method
: tales como GET, POST, PATCHheaders
: un objeto del tipo Headermode
: tales comocors
,no-cors
,same-origin
cache
: el modo de cache para la solicitudcredentials
: en ocasiones requeridas para identificarse en la API destinobody
: el contenido de la solicitud
Sigue este link para ver la lista completa de opciones disponibles.
El siguiente ejemplo muestra el uso de fetch, la cual hace una solicitud a la API de GitHub para obtener una lista de repositorios git.
const url = 'https://api.github.com/users/shrutikapoor08/repos';
fetch(url)
.then(response => response.json())
.then(repos => {
const reposList = repos.map(repo => repo.name);
console.log(reposList);
})
.catch(err => console.log(err))
Para hacer una solicitud con el método POST, utilizaremos el parámetro method
. En el siguiente ejemplo se hace una solicitud asíncrona, con la sintaxis async/await.
const params = { id: 123 }
const response = await fetch('url', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(params)
});
const data = await response.json();
¿Interesado en más aprendizajes pequeños de JavaScript? Subscríbete al boletín del autor (en ingles)
Traducido del artículo de Shruti Kapoor - How to Use Fetch to Make AJAX Calls in JavaScript