Suche…


Syntax

  • promise = fetch (url) .then (Funktion (Antwort) {})
  • Promise = Abruf (URL, Optionen)
  • Versprechen = Abruf (Anfrage)

Parameter

Optionen Einzelheiten
method Die für die Anforderung zu verwendende HTTP-Methode. zB: GET , POST , PUT , DELETE , HEAD . Standardeinstellung auf GET .
headers Ein Headers Objekt, das zusätzliche HTTP-Header enthält, die in die Anforderung aufgenommen werden sollen.
body Die Anforderungsnutzlast kann eine string oder ein FormData Objekt sein. Der Standardwert ist undefined
cache Der Cache-Modus. default , reload , no-cache
referrer Der Referrer der Anfrage.
mode cors , no-cors same-origin . Der Standardwert ist " no-cors .
credentials omit , same-origin , include . Standardwerte zum omit .
redirect follow , error , manual . Standardeinstellungen follow .
integrity Zugehörige Integritätsmetadaten. Der Standardwert ist eine leere Zeichenfolge.

Bemerkungen

Der Abrufstandard definiert Anforderungen, Antworten und den Prozess, der sie bindet: Abrufen.

Neben anderen Schnittstellen definiert der Standard Request und Response Objekte, die für alle Vorgänge mit Netzwerkanforderungen bestimmt sind.

Eine nützliche Anwendung dieser Schnittstellen ist GlobalFetch , mit dem Remote-Ressourcen geladen werden können.

Für Browser, die den Fetch-Standard noch nicht unterstützen, verfügt GitHub über eine Polyfill . Darüber hinaus gibt es eine Node.js-Implementierung , die für die Server / Client-Konsistenz nützlich ist.

Wenn keine stornierbaren Versprechen vorliegen, können Sie die Abrufanforderung nicht abbrechen ( Problem mit Github ). Es gibt jedoch einen Vorschlag des T39 in Stufe 1 für kündbare Versprechen.

GlobalFetch

Die GlobalFetch Schnittstelle macht die fetch die verwendet werden können , Mittel zu beantragen.

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

Der aufgelöste Wert ist ein Antwortobjekt . Dieses Objekt enthält den Hauptteil der Antwort sowie Status und Header.

Anforderungsheader festlegen

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

Post-Daten

Buchungsformulardaten

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

JSON-Daten buchen

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

Cookies senden

Die Abruffunktion sendet standardmäßig keine Cookies. Es gibt zwei Möglichkeiten, Cookies zu senden:

  1. Senden Sie Cookies nur, wenn die URL den gleichen Ursprung wie das aufrufende Skript hat.
fetch('/login', {
    credentials: 'same-origin'
})
  1. Senden Sie immer Cookies, auch wenn Sie Anrufe aus anderen Ländern führen.
fetch('https://otherdomain.com/login', {
    credentials: 'include'
})

JSON-Daten abrufen

// 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));

Verwenden von Abrufen zum Anzeigen von Fragen aus der Stack Overflow API

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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow