Fehlerbehandlung für API-Aufrufe implementieren
In diesem Schritt werden wir unseren API-Aufruf robuster gestalten, indem wir eine ordnungsgemäße Fehlerbehandlung implementieren. API-Anfragen können aus verschiedenen Gründen fehlschlagen, z. B. wegen einer falschen URL, Netzwerkproblemen oder serverseitigen Problemen. Es ist entscheidend, diese potenziellen Fehler ordnungsgemäß zu behandeln, um eine bessere Benutzererfahrung zu bieten.
Ein wichtiger Punkt bei der fetch
-API ist, dass ihr Promise bei HTTP-Fehlerstatuscodes wie 404 (Not Found) oder 500 (Internal Server Error) nicht abgelehnt wird. Es wird nur abgelehnt, wenn ein Netzwerkfehler auftritt, der die vollständige Ausführung der Anfrage verhindert. Um HTTP-Fehler zu behandeln, müssen wir die Eigenschaft response.ok
überprüfen, die für erfolgreiche Antworten (Statuscodes 200-299) true
ist.
Wir werden unser ~/project/index.js
aktualisieren, um den Antwortstatus zu überprüfen und potenzielle Fehler zu behandeln.
Ersetzen Sie den Inhalt Ihrer ~/project/index.js
-Datei durch den folgenden Code. Wir fügen eine Überprüfung im ersten .then()
-Block hinzu.
const apiUrl = "https://jsonplaceholder.typicode.com/todos/1";
const outputElement = document.getElementById("data-output");
fetch(apiUrl)
.then((response) => {
// Check if the response was successful.
// The 'ok' property is a boolean that is true if the status code is in the 200-299 range.
if (!response.ok) {
// If not, we throw an error which will be caught by the .catch() block.
throw new Error(`HTTP error! status: ${response.status}`);
}
return response.json();
})
.then((data) => {
outputElement.innerHTML = `
<p><strong>Title:</strong> ${data.title}</p>
<p><strong>Completed:</strong> ${data.completed}</p>
`;
})
.catch((error) => {
// Display a user-friendly error message in the HTML element.
outputElement.textContent = "Failed to load data. Please try again later.";
// Log the technical error to the console for debugging purposes.
console.error("Error fetching data:", error);
});
Um unsere Fehlerbehandlung in Aktion zu sehen, verwenden wir absichtlich eine ungültige API-URL. Ändern Sie die apiUrl
in ~/project/index.js
, sodass sie auf eine nicht vorhandene Ressource verweist. Dies führt dazu, dass die API einen 404 Not Found-Fehler zurückgibt.
Ändern Sie diese Zeile in Ihrer index.js
-Datei:
const apiUrl = 'https://jsonplaceholder.typicode.com/todos/1';
Zu dieser:
const apiUrl = 'https://jsonplaceholder.typicode.com/invalid-path/1';
Sehen wir uns nun das Ergebnis an. Wenn Ihr Python-Webserver aus dem vorherigen Schritt noch läuft, aktualisieren Sie einfach den Vorschau-Tab in Ihrem Browser. Wenn Sie ihn gestoppt haben, starten Sie ihn erneut im Terminal:
python3 -m http.server 8080
Öffnen Sie dann die Vorschau. Anstelle der Daten sollten Sie die Fehlermeldung auf der Seite sehen, da unsere if (!response.ok)
-Prüfung den 404-Fehler abgefangen hat.
Erwartete Ausgabe auf der Webseite:
Failed to load data. Please try again later.
Wichtig: Bevor Sie mit dem nächsten Schritt fortfahren, denken Sie daran, die apiUrl
wieder auf die korrekte zurückzusetzen: https://jsonplaceholder.typicode.com/todos/1
.