Saltar al contenido principal

Fetch API

@serverSerrverlesskiy

La Fetch API permite que JavaScript se comunique con el servidor mediante solicitudes HTTP y es un mejor reemplazo para la clase XMLHttpRequest. Las solicitudes se realizan mediante el método fetch(), que devuelve Promise.

Exchange

Sintaxis

Book

fetch(url, { options })
  • url - URL para enviar la solicitud;
  • options - parámetros de solicitud.

Al especificar el método fetch() sin options, recibirá una solicitud GET que descarga los datos en la dirección URL.

Video

Parámetros de consulta

Opción

El segundo argumento {options} acepta opciones de consulta. Lista de parámetros:

  1. method - método de solicitud (GET, POST, PUT, DELETE, HEAD);
  2. headers: encabezados HTTP;
  3. body - cuerpo de la solicitud (usado para el método: POST / PUT);
  4. cache: modo de almacenamiento en caché (predeterminado, recargar, sin caché);
  5. mode - modo de solicitud (cors, no-cors, mismo origen);
  6. redirect: especifica cómo manejar los redireccionamientos (seguimiento, error, manual);
  7. referrer - referencia de solicitud;
  8. signal - AbortSignal, solicitud de cancelación;
  9. credentials - envío de cookies junto con la solicitud - mit, mismo origen.
fetch('https://jsonplaceholder.typicode.com/users', {
method: 'GET',
headers: {
'Content-Type': 'application/json'
},
mode: 'no-cors'
})

Obtener una respuesta

Baloncesto

El método fetch() devuelve Promise un objeto de la clase Response, que tiene las siguientes propiedades:

  1. status - código de respuesta;
  2. statusText - mensaje de texto correspondiente al código de respuesta;
  3. ok: un valor booleano que indica el éxito del código de respuesta (verdadero: 200-299);
  4. headers: un objeto con encabezados de respuesta, en el que la clave es el nombre del encabezado y el valor de la clave es el valor del encabezado correspondiente a la clave;
  5. url: la URL a la que se envió la solicitud;
  6. body - datos de respuesta en formato ReadableStream
  7. bodyUsed es un valor booleano que indica que se están leyendo los datos.
fetch('https://jsonplaceholder.typicode.com/users').then(response => console.log(response))

Manejo de la respuesta

Descargar

Los datos transferidos están en formato ReadableStream. Puede utilizar los siguientes métodos para cambiar el formato:

  1. text() - convierte la respuesta en una cadena;
  2. json() - convierte la respuesta en formato JSON;
  3. blob(): convierte la respuesta en un objeto Blob;
  4. formData() - convierte la respuesta en una instancia de FormData;
  5. arrayBuffer(): convierte la respuesta en un objeto ArrayBuffer.

Un ejemplo de cómo convertir una respuesta al formato JSON.

fetch('https://jsonplaceholder.typicode.com/users')
.then(response => response.json())
.then(data => console.log(data))

Procesamiento de errores

Error

Podemos averiguar si fetch() terminó con un error usando las propiedades: "status" y "ok".

fetch('https://jsonplaceholder.typicode.com/users')
.then(response => {
if (!response.ok) {
console.log('Algo salió mal... Estado:' + response.status)
} else {
return response.json()
}
})
.then(data => console.log(data))

При помощи .catch()

fetch('https://jsonplaceholder.typicode.com/users')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.log(error))

Solicitar ejemplos

Math

fetch('https://jsonplaceholder.typicode.com/users')
.then(response => response.json())
.then(data => console.log(data[0].name + ' and ' + data[2].name))
.catch(error => console.log(error))

Lo mismo, utilizando la sintaxis async/await, de la que aprenderemos más en el próximo artículo.

let response = await fetch('https://jsonplaceholder.typicode.com/users')
let data = await response.json()
console.log(data[0].name + ' and ' + data[2].name)

¿Problemas?

Problema

Escribe en Discord o Telegram chat y suscríbete a nuestras noticias

Campamento JavaScript

Preguntas

Question

¿Qué devuelve el método fetch()?

  1. Función
  2. Objeto
  3. Promise

Dado solo un parámetro de URL para fetch(), ¿qué solicitud recibimos?

  1. POST
  2. GET
  3. PUT

¿Qué parámetro especifica los encabezados HTTP?

  1. redirect
  2. headers
  3. credentials

¿Qué método se debe usar para convertir la respuesta en una cadena?

  1. blob()
  2. json()
  3. text()

Para comprender cuánto ha aprendido en esta lección, realice la prueba en aplicación móvil en nuestra escuela sobre este tema.

Campamento JS

Enlaces

  1. Learn JavaScript
  2. MDN Web Docs
  3. JS Tutorial

Contributors ✨

Thanks goes to these wonderful people (emoji key):


IIo3iTiv


Dmitriy Vasilev

💵

Resoner2005

🐛 🎨 🖋

Navernoss

🖋 🐛 🎨

EnglishMoji!