Aufgabe 14 - Reifegrad-Analyse einer fremden API
Aufgabe 14 - Reifegrad-Analyse einer fremden API
Abschnitt betitelt „Aufgabe 14 - Reifegrad-Analyse einer fremden API“Worum geht es?
Abschnitt betitelt „Worum geht es?“Sie nehmen eine öffentlich zugängliche Schnittstelle auseinander und ordnen sie in die Richardson-Reifegrade ein (siehe Kapitel Schnittstellen im Vergleich). Fremde APIs zu lesen ist die Tätigkeit, die Sie im Berufsleben häufiger ausüben werden als APIs zu bauen, und sie schärft den Blick für den eigenen Entwurf im nächsten Kapitelabschnitt.
Was Sie dafür brauchen
Abschnitt betitelt „Was Sie dafür brauchen“- Kapitel Schnittstellen im Vergleich, Abschnitte REST in der Tiefe und Statuscodes sind Teil des Vertrags.
curloder ein Werkzeug wie Bruno, Insomnia oder Postman.- Eine öffentliche API ohne Anmeldung. Geeignet sind etwa die Schnittstellen von Wikipedia, der Open-Meteo-Wetterdienst, das offene Datenportal des Bundes oder eine API aus dem Katalog Ihrer Lehrkraft.
Welche Kompetenzen Sie erwerben und zeigen
Abschnitt betitelt „Welche Kompetenzen Sie erwerben und zeigen“- Sie ordnen eine fremde Schnittstelle in die Richardson-Reifegrade ein und begründen die Einordnung.
- Sie prüfen, ob Methoden sicher und idempotent verwendet werden und ob Statuscodes sachgerecht gewählt sind.
- Sie erkennen Schwächen in einem fremden Entwurf und schlagen konkrete Verbesserungen vor.
Pädagogische Einordnung
Abschnitt betitelt „Pädagogische Einordnung“- Reproduktion: die vier Reifegrade benennen und einfache Anfragen absetzen (Teil A).
- Reorganisation und Transfer: eine fremde API systematisch untersuchen und einordnen (Teil B).
- Reflexion, Problemlösung und Urteilsbildung: Schwächen aufzeigen und einen besseren Entwurf vorschlagen (Teil C).
Arbeitsaufträge
Abschnitt betitelt „Arbeitsaufträge“Die Übung ist auf etwa zwei Stunden ausgelegt.
Teil A - Aufwärmen an bekannten Beispielen
Abschnitt betitelt „Teil A - Aufwärmen an bekannten Beispielen“-
Schreiben Sie die vier Richardson-Reifegrade untereinander und ergänzen Sie zu jedem in einem Satz das Merkmal, an dem man ihn erkennt.
-
Ordnen Sie die folgenden sechs Aufrufe einem Reifegrad zu und begründen Sie jede Zuordnung in einem halben Satz:
POST /apimit{"action": "getUser", "id": 7}GET /users/7POST /users/7/deleteDELETE /users/7GET /users/7mit einer Antwort, die Links auf/users/7/ordersenthältPOST /createUser
-
Setzen Sie drei einfache
GET-Anfragen an Ihre gewählte API ab und speichern Sie die Antworten. Notieren Sie zu jeder den Statuscode und die ersten Zeilen des Rumpfes. -
Rufen Sie eine Adresse ab, die es sicher nicht gibt, etwa mit einer erfundenen ID. Notieren Sie den Statuscode. Prüfen Sie, ob er zum Fall passt, und schreiben Sie in einem Satz, welcher Code richtig wäre.
Teil B - Die Untersuchung
Abschnitt betitelt „Teil B - Die Untersuchung“-
Legen Sie eine Tabelle Ihrer untersuchten API an mit den Spalten Methode und Pfad, Zweck, Statuscode bei Erfolg, Statuscode bei Fehler. Tragen Sie mindestens fünf Endpunkte ein.
-
Prüfen Sie die Pfade auf Verben. Notieren Sie jeden Pfad, in dem ein Verb steckt, und schreiben Sie daneben, wie er ressourcenorientiert aussehen würde.
-
Prüfen Sie mit
curl -i, welche Kopfzeilen zurückkommen. Suchen Sie nachCache-Control,ETagundLocationund notieren Sie, welche davon vorhanden sind. -
Setzen Sie dieselbe
GET-Anfrage zweimal ab und vergleichen Sie die Antworten. Beantworten Sie in zwei Sätzen, ob sich der Aufruf sicher verhält, also ob er etwas verändert. -
Ordnen Sie die API einem Reifegrad zu. Schreiben Sie eine Begründung von vier bis fünf Sätzen, in der Sie mindestens drei Beobachtungen aus den Punkten 1 bis 4 als Belege verwenden.
-
Suchen Sie die Dokumentation der API. Notieren Sie, ob es eine OpenAPI-Beschreibung gibt, und beantworten Sie in zwei Sätzen, was Sie ohne Dokumentation nicht herausfinden konnten.
Teil C - Befund und Gegenentwurf
Abschnitt betitelt „Teil C - Befund und Gegenentwurf“-
Schreiben Sie einen Befundbericht von etwa 15 Zeilen. Er nennt drei Stärken und drei Schwächen der untersuchten API, jede mit einem konkreten Beleg aus Ihrer Tabelle.
-
Nehmen Sie die schwächste Stelle und entwerfen Sie sie neu. Legen Sie eine Gegenüberstellung an: links der bestehende Aufruf mit Methode, Pfad und Statuscodes, rechts Ihr Vorschlag. Begründen Sie in drei bis vier Sätzen, was Ihr Entwurf besser macht.
-
Untersuchen Sie das Fehlerverhalten genauer. Provozieren Sie drei verschiedene Fehler, etwa eine unbekannte ID, einen fehlenden Pflichtparameter und einen ungültigen Wert. Notieren Sie zu jedem den Statuscode und den Rumpf.
-
Beurteilen Sie das Fehlermodell in drei bis vier Sätzen: Kann ein Aufrufer allein am Statuscode entscheiden, was zu tun ist? Falls nicht, beschreiben Sie, was dafür fehlt.
-
Prüfen Sie, ob die API die Verwechslung von 401 und 403 begeht oder Fehler als
200mit einemerror-Feld ausliefert. Falls ja, beschreiben Sie in drei Sätzen, welches Problem das einem Aufrufer bereitet. -
Ziehen Sie zwei Lehren für Ihr eigenes Projekt. Schreiben Sie jede als Regel in einem Satz auf und legen Sie beide in
docs/architektur.mdab. Sie werden in Aufgabe 15 dagegen entwerfen.
Wissenscheck
Abschnitt betitelt „Wissenscheck“- Was kennzeichnet die Reifegrade 0 bis 3, und wo liegt praktisch das meiste, was sich REST-API nennt?
- Warum ist Grad 3 selten, und in welchen Systemen zahlt er sich aus?
- Was bedeutet „sicher”, was bedeutet „idempotent”, und welche Methoden sind was?
- Warum darf ein
GETniemals etwas verändern? Nennen Sie zwei Beteiligte, die sich darauf verlassen. - Wann antwortet ein Server mit 401, wann mit 403, und was macht ein Client bei einer Verwechslung falsch?
- Wann ist 409 richtig, wann 422?
- Warum ist eine Fehlermeldung mit Statuscode 200 für jede Zwischenstation ein Problem?
Eine Datei protokoll.md mit den Zuordnungen aus Teil A, der Endpunkttabelle, den Kopfzeilenbefunden und der begründeten Reifegrad-Einordnung aus Teil B sowie dem Befundbericht, der Gegenüberstellung und den drei provozierten Fehlern aus Teil C. Die beiden Regeln für das eigene Projekt stehen in docs/architektur.md.