Die Fetch API ist die moderne Schnittstelle des Browsers, um Netzwerk-Anfragen aus JavaScript heraus zu senden. Mit fetch(url) holt man Daten von einem Server — sie ist der zeitgemäße Nachfolger des älteren XMLHttpRequest (XHR), der in AJAX-Anwendungen verwendet wurde.

Grundlagen

fetch() gibt ein asynchrones Promise zurück, das mit einem Response-Objekt aufgelöst wird. Im Gegensatz zu XHR ist die API deutlich einfacher aufgebaut und liefert von Haus aus saubere Promises statt Callbacks.

fetch('https://api.example.com/daten')
  .then(response => response.json())
  .then(daten => console.log(daten));

Die Antwort wird dabei in zwei Schritten verarbeitet: Zuerst erhält man die Response (Status, Header), dann liest man den Inhalt — zum Beispiel als JSON über response.json().

Optionen und Methoden

fetch('/api/artikel', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ titel: 'Beispiel' })
});
  • method: GET, POST, PUT, DELETE und weitere HTTP-Methoden.
  • headers: Zusätzliche Header wie Content-Type oder Authentifizierungs-Token.
  • body: Der Inhalt bei POST/PUT-Anfragen.
  • mode: Steuert das Verhalten bei CORS-Anfragen.

Fehlerbehandlung

Ein wichtiger Unterschied zu XHR: fetch() verwirft das Promise nur bei Netzwerkfehlern. Ein HTTP-Status wie 404 oder 500 gilt als erfolgreiche Antwort — man muss response.ok oder response.status selbst prüfen.

fetch('/api/daten')
  .then(response => {
    if (!response.ok) throw new Error('HTTP ' + response.status);
    return response.json();
  })
  .catch(fehler => console.error(fehler));

Verwandte Grundlagen: AJAX, XHR, API, Service Worker, SPA.