Aufgabe 09 - API-Konsument
Aufgabe 09 - API-Konsument
Abschnitt betitelt „Aufgabe 09 - API-Konsument“Worum geht es?
Abschnitt betitelt „Worum geht es?“Sie sprechen zum ersten Mal mit einem fremden Server: HTTP-Verkehr analysieren, eine öffentliche API anhand ihrer Dokumentation konsumieren und das Ganze robust gegen alles machen, was schiefgehen kann (siehe Kapitel HTTP und Schnittstellen).
Was Sie dafür brauchen
Abschnitt betitelt „Was Sie dafür brauchen“- Kapitel HTTP und Schnittstellen vollständig.
- Browser mit DevTools, Node.js/TypeScript, curl oder HTTPie.
- Eine öffentliche Test-API ohne Anmeldung (wird im Unterricht festgelegt). Drei bewährte Beispiele, mit denen Sie arbeiten können:
- Open-Meteo (
https://open-meteo.com) - Wetterdaten für beliebige Koordinaten, kein API-Schlüssel nötig. - REST Countries (
https://restcountries.com) - Länderdaten wie Hauptstadt, Einwohnerzahl und Sprachen. - PokéAPI (
https://pokeapi.co) - umfangreiche Daten zu Pokémon, gut zum Üben verschachtelter JSON-Strukturen.
- Open-Meteo (
Welche Kompetenzen Sie erwerben und zeigen
Abschnitt betitelt „Welche Kompetenzen Sie erwerben und zeigen“- Sie lesen HTTP-Verkehr im Netzwerk-Tab und stellen Anfragen von Hand.
- Sie konsumieren eine fremde API anhand ihrer Dokumentation mit
fetchund typisieren den Datenvertrag. - Sie behandeln alle drei Fehlerklassen der Netzwerkgrenze benutzergerecht.
Pädagogische Einordnung
Abschnitt betitelt „Pädagogische Einordnung“- Reproduktion: HTTP-Bestandteile im Netzwerk-Tab identifizieren und benennen (Teil A).
- Reorganisation und Transfer: die API-Doku in Anfragen und typisierten Code übersetzen (Teile B und C).
- Reflexion, Problemlösung und Urteilsbildung: Fehlerfälle systematisch provozieren, unterscheiden und die Robustheit nachweisen (Teil D).
Arbeitsaufträge
Abschnitt betitelt „Arbeitsaufträge“Die Übung ist auf etwa zwei Stunden ausgelegt. Teil D ist der Expertenteil.
Teil A - HTTP beobachten
Abschnitt betitelt „Teil A - HTTP beobachten“- Öffnen Sie eine beliebige Webseite mit offenem Netzwerk-Tab (F12). Finden Sie: einen
GET-Request, einen mit Status200, einen mit3xxoder4xx. - Notieren Sie für einen Request: Methode, vollständige URL, drei Request-Header, Statuscode,
Content-Typeder Antwort. - Beantworten Sie in zwei Sätzen: Was unterscheidet
404von500, und wer hat jeweils den Fehler gemacht?
Teil B - Von Hand anfragen
Abschnitt betitelt „Teil B - Von Hand anfragen“- Lesen Sie die Dokumentation der vereinbarten API: Welche Endpunkte gibt es, welche Parameter, wie sieht eine Antwort aus?
- Stellen Sie zwei erfolgreiche Anfragen von Hand (Browser-Adresszeile, curl oder HTTPie) und sehen Sie sich die JSON-Antwort in Ruhe an.
- Halten Sie den benötigten Ausschnitt der Antwort als TypeScript-Interface fest; nur die Felder, die Ihr Programm verwenden wird.
Teil C - Der typisierte Konsument
Abschnitt betitelt „Teil C - Der typisierte Konsument“- Schreiben Sie
fetchJson<T>(url: string): Promise<T>: einen Wrapper, der bei!response.okeine aussagekräftige Exception wirft (Statuscode und URL in der Meldung) und sonst das geparste JSON liefert. - Bauen Sie darauf ein kleines Konsolenprogramm: Es nimmt eine Eingabe (etwa einen Ortsnamen), fragt die API ab und zeigt ein aufbereitetes Ergebnis (“Villach: 18 °C, bewölkt”).
- Nutzen Sie beim Zugriff auf optionale Felder
?.und??; kein Absturz, wenn die API ein Feld weglässt.
Teil D - Expertenteil: Chaostest und Parallelabfrage
Abschnitt betitelt „Teil D - Expertenteil: Chaostest und Parallelabfrage“- Chaostest: Ihr Programm muss drei Störungen unterscheidbar und verständlich melden (kein Stacktrace für Benutzer): (a) falsche Domain (Netzwerkfehler;
fetchwirft), (b) existente Domain mit unbekanntem Endpunkt (404), (c) unsinnige Nutzereingabe (leeres Ergebnis oder Fehlermeldung der API). Führen Sie ein Protokoll: Störung, beobachtete Meldung, bestanden ja/nein. - Erweitern Sie das Programm: drei Eingaben auf einmal (etwa drei Orte), parallel abgefragt, mit Sammelbericht auch bei Teilausfällen. Das richtige Koordinationswerkzeug kennen Sie aus Aufgabe 07; begründen Sie die Wahl.
- Ergänzen Sie ein Timeout von zwei Sekunden pro Anfrage über
AbortControllermitfetch-signal. - Beurteilen Sie in drei Sätzen: Welche der Störungen aus Punkt 1 kann Ihr Programm sinnvoll selbst behandeln, welche kann es nur sauber melden, und woran machen Sie den Unterschied fest?
Wissenscheck
Abschnitt betitelt „Wissenscheck“- Aus welchen Bestandteilen besteht ein HTTP-Request, aus welchen die Response?
- Warum ist
if (!response.ok)in jedemfetch-Aufruf Pflicht? - Welche drei Fehlerklassen hat jede Netzwerkgrenze?
- Was gehört in ein Datenvertrags-Interface für eine fremde API, und was bewusst nicht?
- Was bedeutet
429 Too Many Requests, und welche Übungsdisziplin verhindert es?
consumer.ts (Wrapper, Programm, Parallelfassung), das Interface des Datenvertrags, Ihre Notizen aus Teil A und das Chaostest-Protokoll.