Buscar..


Sintaxis

  • promise = fetch (url) .then (función (respuesta) {})
  • promesa = fetch (url, opciones)
  • promesa = buscar

Parámetros

Opciones Detalles
method El método HTTP a utilizar para la solicitud. Ej: GET , POST , PUT , DELETE , HEAD . El valor predeterminado es GET .
headers Un objeto de Headers que contiene encabezados HTTP adicionales para incluir en la solicitud.
body La carga útil de solicitud, puede ser una string o un objeto FormData . Por defecto está undefined
cache El modo de almacenamiento en caché. default , reload , no-cache
referrer El referente de la solicitud.
mode cors , no-cors , del same-origin . Por defecto a no-cors .
credentials omit , same-origin , include . El valor predeterminado es omit .
redirect follow , error , manual . Por defecto follow .
integrity Metadatos de integridad asociados. El valor predeterminado es vaciar la cadena.

Observaciones

El estándar Fetch define solicitudes, respuestas y el proceso que las vincula: obtención de datos.

Entre otras interfaces, el estándar define los objetos de Request y Response , diseñados para ser utilizados para todas las operaciones que involucran solicitudes de red.

Una aplicación útil de estas interfaces es GlobalFetch , que se puede usar para cargar recursos remotos.

Para los navegadores que aún no admiten el estándar Fetch, GitHub tiene un polyfill disponible. Además, también hay una implementación de Node.js que es útil para la consistencia servidor / cliente.

En ausencia de Promesas cancelables, no puede abortar la solicitud de búsqueda ( problema de github ). Pero hay una propuesta del T39 en la etapa 1 para promesas cancelables.

GlobalFetch

La interfaz GlobalFetch expone la función de fetch , que se puede utilizar para solicitar recursos.

fetch('/path/to/resource.json')
    .then(response => {
        if (!response.ok()) {
            throw new Error("Request failed!");
        }
            
        return response.json();
    })
    .then(json => { 
        console.log(json);
    }); 

El valor resuelto es un objeto de respuesta . Este objeto contiene el cuerpo de la respuesta, así como su estado y encabezados.

Establecer encabezados de solicitud

fetch('/example.json', {
    headers: new Headers({
        'Accept': 'text/plain',
        'X-Your-Custom-Header': 'example value'
    })
});

Datos POST

Datos de formulario de publicación

fetch(`/example/submit`, {
    method: 'POST',
    body: new FormData(document.getElementById('example-form'))
});

Publicar datos JSON

fetch(`/example/submit.json`, {
    method: 'POST',
    body: JSON.stringify({
        email: document.getElementById('example-email').value,
        comment: document.getElementById('example-comment').value
    })
});

Enviar galletas

La función de búsqueda no envía cookies por defecto. Hay dos formas posibles de enviar cookies:

  1. Solo envíe cookies si la URL está en el mismo origen que el script de llamada.
fetch('/login', {
    credentials: 'same-origin'
})
  1. Envíe siempre cookies, incluso para llamadas de origen cruzado.
fetch('https://otherdomain.com/login', {
    credentials: 'include'
})

Obtención de datos JSON

// get some data from stackoverflow
fetch("https://api.stackexchange.com/2.2/questions/featured?order=desc&sort=activity&site=stackoverflow")
  .then(resp => resp.json())
  .then(json => console.log(json))
  .catch(err => console.log(err));

Uso de Fetch para mostrar preguntas de la API de desbordamiento de pila

const url =
      'http://api.stackexchange.com/2.2/questions?site=stackoverflow&tagged=javascript';

const questionList = document.createElement('ul');
document.body.appendChild(questionList);

const responseData = fetch(url).then(response => response.json());
responseData.then(({items, has_more, quota_max, quota_remaining}) => {
  for (const {title, score, owner, link, answer_count} of items) {
    const listItem = document.createElement('li');
    questionList.appendChild(listItem);
    const a = document.createElement('a');
    listItem.appendChild(a);
    a.href = link;
    a.textContent = `[${score}] ${title} (by ${owner.display_name || 'somebody'})`
  }
});


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow