Überblick
Eine REST-API (auch bekannt als RESTful API) ist eine API (Application Programming Interface) oder Web-API, die den Beschränkungen der REST-Architektur unterliegt und Interaktionen mit RESTful Webservices ermöglicht. REST steht für „Representational State Transfer“ und wurde vom US-amerikanischen Informatiker Roy Fielding entwickelt.
Was ist eine REST-API?
Eine API besteht aus mehreren Tools, Definitionen und Protokollen zur Entwicklung und Integration von Anwendungssoftware. Manchmal werden APIs auch als ein Vertrag zwischen einem Informationsanbieter und einem Informationsnutzer über den vom Konsumenten benötigten Inhalt (der Aufruf) und dem vom Produzenten benötigten Inhalt (der Antwort) bezeichnet. In einer API für einen Wetterdienst könnte beispielsweise der Nutzer eine Postleitzahl angeben, worauf der Produzent ein zweiteiliges Ergebnis zurückgibt: die höchste und die niedrigste Temperatur.
Mit anderen Worten, wenn Sie mit einem PC oder System interagieren und entweder Informationen abrufen oder Funktionen ausführen möchten, stellen APIs sicher, dass Sie mit dem System so kommunizieren können, dass es die Anforderung verstehen und erfüllen kann.
Man kann sich APIs als Vermittler zwischen Nutzern oder Clients und den von ihnen benötigten Ressourcen oder Webservices vorstellen. Dazu können Organisationen mit ihnen Ressourcen und Informationen teilen und gleichzeitig Sicherheit, Kontrolle und Authentifizierung gewährleisten, indem sie bestimmen, wer auf welche Ressourcen zugreifen kann.
Ein weiterer Vorteil von APIs ist, dass Sie die Einzelheiten des Cachings nicht genau kennen müssen, d. h. auf welche Weise Ihre Ressource abgerufen wird oder woher sie stammt.
Was ist REST?
Bei REST handelt es sich um eine Sammlung von Architekturbeschränkungen und nicht um ein Protokoll oder einen Standard. API-Entwickler können REST auf vielfältige Weise implementieren.
Wenn eine Client-Anforderung über eine RESTful API gestellt wird, überträgt diese eine Repräsentation des Ressourcenstatus an den Anforderer oder Endpunkt. Diese Repräsentation bzw. diese Informationen werden in einem der HTTP-Formate bereitgestellt: JSON (JavaScript Object Notation), HTML, XLT, Python, PHP oder Plain Text. JSON ist hierbei die beliebteste Programmiersprache, weil es trotz seines Namens sprachagnostisch ist und sowohl von Menschen als auch von Maschinen gelesen werden kann.
Außerdem müssen Sie Folgendes berücksichtigen: Header und Parameter sind ebenfalls wichtige Komponenten in den HTTP-Methoden einer RESTful API-HTTP-Anforderung. Sie enthalten wichtige ID-Informationen in Bezug auf die Metadaten der Anforderung, die Autorisierung, den URI (Uniform Resource Identifier), das Caching, Cookies usw. Es gibt Anforderungs- und Antwort-Header, die jeweils eigene HTTP-Verbindungsinformationen und Statuscodes aufweisen.
RESTful APIs zeichnen sich durch folgende Kriterien aus:
- Eine aus Clients, Servern und Ressourcen bestehende Client/Server-Architektur, die Anforderungen per HTTP verwaltet.
- Zustandslose Client/Server-Kommunikation, d. h. zwischen GET-Anforderungen werden keine Client-Informationen gespeichert, und die einzelnen Anforderungen sind separat und nicht verbunden.
- Cachingfähige Daten, mit denen Client/Server-Interaktionen optimiert werden.
- Eine einheitliche Schnittstelle zwischen Komponenten, um Informationen in standardisierter Form zu übertragen. Hierfür ist Folgendes erforderlich:
- Die angefragten Ressourcen sind identifizierbar und von den an den Client gesendeten Repräsentationen getrennt.
- Ressourcen können durch den Client über die von ihnen empfangene Repräsentation manipuliert werden, weil sie genügend Informationen hierfür enthält.
- An den Client zurückgegebene selbstbeschreibende Nachrichten enthalten genügend Informationen, die die Art und Weise der Verarbeitung durch den Client beschreiben.
- Hypertext/Hypermedia, d. h. der Client sollte nach dem Zugriff auf eine Ressource in der Lage sein, mithilfe von Hyperlinks alle aktuelle verfügbaren ausführbaren Aktionen aufzufinden.
- Ein mehrstufiges System, mit dem alle Servertypen (zuständig für Sicherheit, Load Balancing usw.) organisiert werden, die am Abruf der angeforderten Informationen in für den Client unsichtbaren Hierarchien beteiligt sind.
- Code-on-Demand (optional): Die Fähigkeit, auf Anforderung ausführbaren Code vom Server an den Client zu senden und so die Client-Funktionalität zu erweitern.
Obwohl REST-APIs alle diese Kriterien erfüllen müssen, lassen sie sich trotzdem einfacher verwenden als vorgeschriebene Protokolle wie SOAP (Simple Object Access Protocol), für die spezifische Anforderungen wie XML-Messaging, integrierte Sicherheit und Transaktions-Compliance erforderlich sind, was sie langsamer und schwerfälliger macht.
Im Gegensatz dazu handelt es sich bei REST um Richtlinien, die flexibel implementiert werden können. Dadurch wiederum gestalten sich REST-APIs schneller und kompakter mit verbesserter Skalierbarkeit und eignen sich so perfekt für das Internet of Things (IoT) und die Entwicklung mobiler Apps.
Warum Red Hat?
Red Hat® Integration ist eine API-orientierte Lösung, die Anwendungskonnektivität und Datentransformation, Serviceerstellung und -orchestrierung, Echtzeit-Nachrichten-Streaming, Änderungsdatenerfassung sowie API-Management vereint, um Anwendungen und Daten in Hybrid-Infrastrukturen miteinander zu verbinden. Zur Unterstützung der modernen App-Entwicklung ist es mit einer cloudnativen Plattform und Toolchain integriert.
Red Hat 3scale API Management ist eine Komponente von Red Hat Integration, mit der Sie Ihre APIs auf einer Infrastrukturplattform teilen, verteilen, kontrollieren und monetarisieren können, die auf Performance, Kontrolle, Sicherheit und Wachstum ausgelegt ist. Sie können 3scale-Komponenten lokal und/oder in Cloud-Umgebungen integrieren.