REST

Veröffentlicht am:

Die wichtigsten Befehle zum Merken

  • curl -i URL — Ressourcenantwort und Header untersuchen.
  • jq — Felder einer JSON-Repräsentation auswählen.

Befehle und Optionen

Option oder Syntax Bedeutung
-i HTTP-Antwortheader ergänzen.
-fsS Bei HTTP-Fehlerstatus scheitern, Fortschritt ausblenden und Fehler behalten.
--max-time 10 Jede Anfrage auf zehn Sekunden begrenzen.
| Curl-Body an jq weiterreichen.
jq '{name, full_name, private}' Ein Objekt mit diesen drei JSON-Feldern bilden.

Die zwei Anfragen lesen öffentliche Metadaten. Der letzte Pipelinestatus kann einen curl-Fehler verdecken; lies Meldungen beider Programme.

Die entscheidenden Konzepte

1. REST ist ein Architekturstil

Representational State Transfer (REST) beschreibt Regeln verteilter Systeme, darunter einheitliche Schnittstellen, zustandslose Kommunikation, Caching und Schichten. Es ist nicht bloß ein anderer Name für jede JSON-API.

Eine Ressource ist ein identifizierbares Ziel, etwa Repository oder Bestellung. Der Server überträgt eine Repräsentation ihres Zustands. Diese kann JSON, HTML oder ein anderes Format sein. Die Ressource selbst ist nicht das serialisierte Dokument.

2. Methoden besitzen gemeinsame Bedeutungen

Eine HTTP-Schnittstelle verwendet Methoden konsistent, statt Absichten aus beliebigen Aktionsnamen abzuleiten. GET liest eine Repräsentation. PUT ersetzt nach API-Regeln die Zielrepräsentation. DELETE fordert das Entfernen der Zielzuordnung; POST übergibt häufig Daten zur Verarbeitung.

Safe bedeutet, dass keine Zustandsänderung angefordert werden soll. Idempotent bedeutet denselben beabsichtigten Effekt wiederholter gleicher Anfragen, nicht identische Antworten. Das zählt für Wiederholungen und Vermittler.

3. Zustandslose Anfragen arbeiten weiterhin mit gespeicherten Daten

Zustandslosigkeit bedeutet, dass jede Anfrage den nötigen Kontext enthält, statt auf einer impliziten serverseitigen Gesprächssitzung zu beruhen. Der Server darf selbstverständlich Datenbanken und Ressourcenzustand speichern.

Authentifizierungsdaten, Parameter und Ressourcenkennungen liefern Kontext pro Aufruf. Eine dauerhaft gespeicherte Bestellung verletzt diese Eigenschaft nicht allein durch ihre Existenz zwischen Anfragen.

4. Eine einheitliche Schnittstelle macht Austausch verständlich

Repräsentationen und Metadaten erklären die Antwort. Links können verfügbare Übergänge beschreiben. Dieser Hypermedia-Aspekt gehört zum vollständigen REST-Modell, obwohl viele RESTful genannte APIs nur Teile umsetzen.

Statuscodes, Validatoren und Inhaltstypen ermöglichen generische Werkzeuge. Fehlerbodies benötigen weiterhin Interpretation. Eine 200-JSON-Antwort beweist weder alle REST-Eigenschaften noch einen korrekten fachlichen Ausgang.

Ein kleines Beispiel

Optional: Führe die Befehle ohne Zugangsdaten aus. Sie lesen ein öffentliches GitHub-Repository und verändern es nicht.

curl -i --max-time 10 https://api.github.com/repos/octocat/Hello-World
curl -fsS --max-time 10 https://api.github.com/repos/octocat/Hello-World | jq '{name, full_name, private}'

Lies zuerst Status, Content-Type und vorhandene Rate-Limit- oder Cache-Header. Jq wählt danach Name, vollständigen Namen und Private-Kennzeichen aus. Das verändert die lokale Sicht, nicht den Serverzustand.

Repository und API-Richtlinien können wechseln. Rate-Limit- oder Verfügbarkeitsfehler sind keine JSON-Probleme. Prüfe curl-Meldungen vor Schlussfolgerungen aus leerer Ausgabe. Zwei unabhängige Abfragen müssen auch nicht denselben Zeitpunkt abbilden.

Es werden weder Konto noch Token oder Datei erstellt. Aufräumen ist nicht erforderlich.

Merke dir: REST ordnet Interaktionen um Ressourcen und eine einheitliche Schnittstelle. JSON allein macht keine REST-API.