IT & Engineering

Was ist eine RESTful-API, wie sie funktioniert, Vorteile und Beispiele

RESTful-APIs sind APIs, die sich an die sechs Vorgaben der REST-Architektur halten. In diesem Beitrag erfahren Sie, wie sie funktionieren, wofür sie verwendet werden und welche Vorteile sie bieten.
Bild für Was ist eine RESTful-API, wie sie funktioniert, Vorteile und Beispiele

RESTful-APIs sind die weltweit am häufigsten verwendeten APIs für Webservices. Sie verwenden HTTP-Anfragen (Hypertext Transfer Protocol), um Daten zu erstellen, zu lesen, zu aktualisieren und zu löschen (CRUD). Sie sind aufgrund ihrer Einfachheit, Skalierbarkeit, Geschwindigkeit und Fähigkeit, alle Datentypen zu verarbeiten, sehr beliebt.

In diesem Artikel tauchen wir tief in die Welt der RESTful-APIs ein und besprechen ihre Funktionsweise, ihre Einsatzmöglichkeiten, ihre Vorteile und wie Sie die E-Mail-API von Mailgun nutzen können, um E-Mails zu versenden, zu empfangen und nachzuverfolgen.

Was ist eine API?

Eine Application Programming Interface (API) ist ein Regelwerk, das zwei Softwareprogramme nutzen, um miteinander zu kommunizieren und Daten auszutauschen.

Denken Sie an das letzte Mal, als Sie ein Subway-Footlong-Sandwich bestellt haben. Man bot Ihnen verschiedene Optionen an: Brotsorte, Saucen, Gemüse und so weiter. Sie haben Ihre Wünsche geäußert und das Sandwich wurde genau nach Ihren Anforderungen zubereitet. Das ist bei der gesamten Kundschaft möglich, weil es einen Kommunikationsstandard zwischen dem Personal und der Kundschaft gibt und alle verfügbaren Optionen klar beschrieben sind. Diese festgelegten Standards fungieren als API, die Ihnen bei der Bestellung hilft und dem Personal ermöglicht, das Sandwich genau nach Ihrem Geschmack zuzubereiten.

Denken Sie nun an die Schaltfläche „Mit Google anmelden“ oder „Mit Google registrieren“, die Sie auf vielen Websites sehen. Google hat durch die API „Google Sign-In for Websites“ einen Kommunikationsstandard zwischen sich und allen Websites weltweit definiert. Das Entwicklungsteam nimmt diese API und integriert sie in die Anmelde- und Registrierungsschaltflächen der jeweiligen Websites. Die API wird aktiv, sobald die Schaltfläche angeklickt wird, ruft Ihre Daten von Google ab und hilft Ihnen dabei, sich mit diesen Daten anzumelden.

Nachdem wir nun wissen, was eine API macht, definieren wir kurz einige Begriffe, die in diesem Artikel vorkommen.

Client

Ein Client ist ein System, das Anfragen stellt, um auf Daten auf einem Server zuzugreifen. In der Subway-Analogie ist der Client die Person, die hereinkommt, um ein Sandwich zu kaufen. In dem Beispiel, in dem Sie Ihre Google-ID verwenden, um sich auf einer Website zu registrieren oder anzumelden, ist die Website der Client.

Server

Ein Server ist ein System, das über die vom Client benötigten Ressourcen verfügt. Im Subway-Beispiel ist das Restaurant der Server. Im Google-ID-Beispiel ist Google der Server.

Ressource

Eine Ressource ist jede Art von Daten, die der Server bereitstellen kann. Im Subway-Beispiel ist das Sandwich die Ressource. Im Google-Beispiel ist Ihre Nutzer-ID die Ressource.

Wenn es um APIs geht, fällt oft der Begriff „Resource Identifier“. Ein Resource Identifier ist nicht die Ressource selbst, sondern eine eindeutige ID, die der Ressource zugewiesen wird. Denken Sie an eine Personaldatenbank mit Tausenden von Angestellten. Es ist sehr wahrscheinlich, dass einige von ihnen denselben Vor- und Nachnamen haben. Deshalb wird in großen Unternehmen allen eine eindeutige Personal-ID zugewiesen, damit es bei der Gehaltsabrechnung und den Urlaubstagen nicht zu Verwechslungen kommt. Ähnlich verhält es sich bei APIs: Durch die Verwendung von Resource Identifiers wird sichergestellt, dass Client und Server bei den vom Client aufgerufenen Ressourcen auf demselben Stand sind.

Arten von API-Anfragen

Es gibt vier Arten von API-Anfragen:

  • DELETE: um vorhandene Daten zu löschen
  • PUT/PATCH: um vorhandene Daten zu aktualisieren/vorhandene Daten zu ändern und zu ersetzen
  • GET: um Daten abzurufen
  • POST: um neue Daten zu erstellen

Was ist eine RESTful-API und wie funktioniert sie?

Eine RESTful-API ist eine API, die den Representational State Transfer (REST) -Architekturvorgaben folgt. Diese Entwicklungsvorgaben – im Grunde eine Reihe von Regeln, die APIs befolgen müssen – ermöglichen schnellere, skalierbare APIs, die alle Datentypen unterstützen. Aus diesem Grund sind RESTful-APIs weltweit die am häufigsten verwendeten APIs, insbesondere bei Webservices.

Das Konzept von REST und seinen sechs Vorgaben wurde im Jahr 2000 erstmals von Roy Fielding in seiner Dissertation – Architectural Styles and the Design of Network-based Software Architectures – vorgestellt. Die Parameter helfen dem Entwicklungsteam, indem sie umreißen, was eine effektive API beinhaltet und ausschließt. Obwohl es also Vorgaben gibt, sind RESTful-APIs tatsächlich einfacher zu entwickeln, zu nutzen und zu verbinden als ihre Nicht-RESTful-Pendants.

Gehen wir im Detail auf diese sechs Vorgaben ein.

Die sechs Architekturvorgaben des REST-Frameworks

1. Client-Server

Client-Server bedeutet, dass die Rollen von Server und Client klar definiert und voneinander getrennt sind. Der Server kümmert sich ausschließlich um die Datenspeicherung und der Client liest Daten (und ändert diese, sofern er die Berechtigung dazu hat). Auf diese Weise können Server und Client unabhängig voneinander skalieren und sich weiterentwickeln. 

2. Einheitliche Schnittstelle (Uniform Interface)

Eine einheitliche Schnittstelle bedeutet, dass der Client Informationen vom Server in einem konsistenten und lesbaren Format erhalten sollte. Die einheitliche Schnittstelle muss den folgenden Leitprinzipien entsprechen:

  • Hypermedia as the Engine of Application State (HATEOAS): RESTful-APIs werden durch Hypermedia gesteuert. Das bedeutet, dass der Client nur Hypermedia verstehen muss, um die vom Server gesendete Antwort zu verarbeiten. Bei anderen API-Typen benötigen Sie eine alternative Sprache namens Interface Description Language (IDL); bei RESTful-APIs ist das nicht der Fall.
  • Selbstbeschreibende Nachrichten (Self-descriptive messages): Eine Nachricht kann als jede Anfrage des Clients an den Server und jede Antwort des Servers an den Client definiert werden. Jede Nachricht, die zwischen dem Client und dem Server hin und her gesendet wird, sollte genügend Informationen enthalten, um sie zu verarbeiten. Das bedeutet, dass die Anfrage, die vom Client an den Server geht, die Ressource identifizieren sollte, auf die zugegriffen werden soll, und genau angeben muss, was damit geschehen soll (erstellen, lesen, aktualisieren oder löschen).
  • Identifizierung von Ressourcen: Die in den Nachrichten zwischen Client und Server erwähnten Ressourcen müssen durch Repräsentationen identifizierbar sein. Dies wird durch die Einhaltung des Uniform Resource Identifier (URI)-Standards erreicht. Mit anderen Worten: Eine Nachricht vom Server an den Client enthält möglicherweise nicht die tatsächliche Datei aus der Datenbank, sondern eine HTML-Repräsentation davon zusammen mit einigen Metadaten. Da die HTML-Repräsentation dem URI-Standard entspricht, kann der Client sie problemlos lesen.
  • Manipulation von Ressourcen durch Repräsentationen: Der Client sollte in der Lage sein, Ressourcen zu manipulieren (erstellen, lesen, aktualisieren, löschen), indem er dem Server eine Ressourcenrepräsentation sendet, die zeigt, wie die finale Version der Ressource aussehen soll. Wenn der Client über ausreichende Berechtigungen zur Manipulation der Daten verfügt, sollte der Server der Anfrage nachkommen.

3. Zustandslosigkeit

RESTful-APIs sind zustandslos. Das bedeutet, dass der Server keine Informationen über die Sitzung des Clients speichert. Während einer Sitzung kann ein Client mehrere Abfragen durchführen und mehrere Anfragen an den Server senden. Damit die API RESTful ist, muss jede Anfrage in sich geschlossen sein und darf keine Informationen enthalten, die sich auf eine vergangene, zukünftige oder gleichzeitige Anfrage beziehen. Auf diese Weise wird die Auslastung des Servers erheblich reduziert.

4. Cache-Fähigkeit

Wenn Daten vom Server angefragt werden, läuft die Anfrage vom Client zum Server über einen Cache mit gespeicherten Informationen. Daten, die bereits im Cache vorhanden sind, können von dort abgerufen werden, ohne den Server zu belasten.

 Bei der Entwicklung sollten die Daten, die vom Server zum Client übertragen werden, als cache-fähig oder nicht cache-fähig gekennzeichnet werden. Cache-fähige Daten werden im Client-Cache gespeichert und können bei Bedarf abgerufen werden. Dies beschleunigt den Zugriff auf diese Daten und entlastet den Server, falls der Client erneut darauf zugreifen möchte.

5. Mehrschichtiges System

In einem mehrschichtigen System gibt es mehrere Schichten (Layer), von denen jede einem bestimmten übergeordneten Zweck dient. Denken Sie an ein standardmäßiges Vierschichtensystem: Eine Datenbankschicht kümmert sich um die Daten, eine Persistenzschicht regelt die Datenspeicherung, eine Geschäftsschicht verarbeitet jegliche Geschäftslogik und eine Präsentationsschicht wandelt die Daten in ein verständliches Format um.

Die Schichten sind so organisiert, dass sie nur mit den direkt darüber und darunter liegenden Schichten interagieren. Manchmal entscheidet sich das Entwicklungsteam statt für vier Schichten für drei und nutzt eine einzige Schicht als kombinierte Datenbank- und Persistenzschicht.

Nach dem Einrichten der Schichten fügt das Entwicklungsteam Proxy- und Gateway-Komponenten hinzu und verteilt verschiedene Funktionen auf die einzelnen Schichten. Die Anzahl der Schichten und deren Anordnung hängen von den Systemanforderungen ab. 

6. Code-on-Demand

Code-on-Demand ist die einzige optionale Architekturvorgabe, damit eine API als RESTful gilt. Die API sollte so entwickelt werden, dass der Client die Möglichkeit hat, ausführbaren Code vom Server anzufordern. Dieser ausführbare Code liegt oft in Form von Applets oder Skripten vor. Nach Erhalt dieses Codes vom Server führt der Client ihn vollständig auf seiner Seite aus.

Denken Sie zum Beispiel an die alten Zeiten, als der Adobe Flash Player erforderlich war, um bestimmte animierte Bereiche auf Webseiten abzuspielen. Wenn der Flash Player fehlte, wurden diese Bereiche nicht geladen und stattdessen ein Fehler angezeigt.

Die Komponenten einer RESTful-API

RESTful-APIs bestehen aus den folgenden Komponenten:

1. Die Endpunkte

Der Endpunkt beschreibt den Speicherort der Daten auf dem Server. Die Endpunkte sind URLs der Ressourcen, auf die Sie über die API zugreifen möchten.

2. Die Methode

Wir haben bereits die vier HTTP-Methoden (GET, PUT, POST, DELETE) besprochen, die APIs zur Datenmanipulation nutzen. Eine API-Anfrage muss eine dieser Methoden verwenden, damit der Server versteht, was zu tun ist.

3. Die Header

RESTful-APIs enthalten HTTP-Header mit Informationen wie Metadaten, Proxys und HTTP-Verbindungstypen. In einer Anfragenachricht enthält der Header Informationen über die Art der Anfrage sowie die Arten gültiger Antworten.

In einer Antwortnachricht enthält der Header außerdem Informationen zum Status der Anfrage sowie entsprechende Statuscodes. „404“ bedeutet beispielsweise, dass die API die angeforderten Daten nicht erfolgreich vom Server abrufen konnte.

4. Die Daten (oder der Body)

Die Daten (oder der Body) der RESTful-API bestehen aus weiteren Informationen zu den vom Client angeforderten Ressourcen. Bei einer einfachen GET-Anfrage sind keine weiteren Informationen erforderlich. Bei einer POST-Anfrage deklariert der Client den Inhaltstyp im Header, während sich der eigentliche Inhalt im Body befindet. Dies könnte eine neue Ressource sein, die der Client an den Server übermittelt. Der Server prüft, ob der Inhaltstyp akzeptabel ist, und sucht dann nach der Ressource im Body.   

Vorteile von RESTful-APIs

RESTful-APIs sind schnell, flexibel, skalierbar und vielseitig. Hier sind einige der wichtigsten Vorteile dieser Art von API:

1. Unterstützung für alle Datentypen

Bei anderen API-Typen sind Sie bei der Auswahl der Datenformate eingeschränkt. RESTful-APIs unterstützen jedoch alle Datenformate. 

2. Hervorragend für Webbrowser geeignet

Bei RESTful-APIs können Sie eine HTTP-Anfrage senden, als Antwort Daten in der JavaScript Object Notation (JSON) erhalten und diese parsen, um sie in den Client-Anwendungen zu verwenden. Das macht sie zur besten Wahl für Webbrowser. Darüber hinaus lassen sich diese APIs problemlos in Ihre bestehende Website integrieren. 

3. Geringerer Bandbreitenbedarf

Dank JSON verbrauchen RESTful-APIs im Vergleich zu anderen API-Typen weniger Bandbreite. Dies gilt jedoch nur für JSON-basierte Web-APIs. Eine XML-basierte Web-API weist ähnliche Nutzdaten (Payload) auf wie ihr Nicht-RESTful-Pendant, unabhängig davon, ob sie die REST-Architekturvorgaben einhält oder nicht.

4. Muss nicht von Grund auf neu entworfen werden

In den meisten Fällen finden Sie Modelle, die Sie anpassen und verwenden können. Zum Beispiel, NetApp und Mailgun bietet ein umfassendes Tutorial und den Quellcode für die Erstellung einer privaten API. In einigen Fällen, vielleicht bei der Entwicklung einer privaten API, müssen Sie die API von Grund auf neu entwerfen. Dabei finden Sie viel Unterstützung auf Stack Overflow

5. Einfach für das Entwicklungsteam

RESTful-APIs verwenden HTTP-Methoden zur Kommunikation. Zur Entwicklung dieser APIs können Sie Python, JavaScript (Node.js), Ruby, C# und eine Reihe weiterer Sprachen verwenden, was die Arbeit damit für das gesamte Entwicklungsteam vereinfacht.

Wofür werden RESTful-APIs verwendet?

RESTful-APIs sind in der SaaS-Branche sehr beliebt, da sie sich hervorragend für Webservices eignen. Diese APIs werden verwendet als: 

Öffentliche APIs für den Zugriff auf weitverbreitete Daten

APIs von Twitter, Facebook und Google sind die besten Beispiele für öffentliche APIs. Diese APIs stehen allen zur Verfügung. Jede Person kann den API-Code einfach übernehmen und auf der eigenen Website implementieren, damit sich die Nutzerinnen und Nutzer mit ihren Social-Media-Konten anmelden können.

Private APIs für den Datenzugriff innerhalb eines Unternehmens

RESTful-APIs werden auch für die private und interne Kommunikation innerhalb der Softwareprogramme eines Unternehmens eingesetzt.  Denken Sie an eine Agentur, die ihrer Kundschaft Webentwicklung anbietet. Sie verfügt über Abteilungen für Personal (HR), Finanzen, Vertrieb, Support, Marketing sowie Produktion und Qualitätssicherung (QA). All diese Abteilungen nutzen ihre eigenen spezifischen Softwareanwendungen sowie einige gemeinsame Tools, um Gehaltsabrechnungen, bezahlten Urlaub (PTOs), Leistungsbeurteilungen usw. zu verwalten. Alle diese Softwareprogramme müssen mit einem zentralen Daten-Repository kommunizieren, das der Führungsebene einen übergeordneten Überblick bietet. Das zentrale Daten-Repository kann über RESTful-APIs mit all diesen Programmen kommunizieren. 

Drittanbieter-APIs für den Zugriff auf kostenpflichtige Daten und Ressourcen

Viele Unternehmen nutzen APIs von Drittanbietern, um ihre Softwareprogramme mit denen ihrer Partner oder ihrer Kundschaft kommunizieren zu lassen. Ein gutes Beispiel hierfür wäre die Mailgun E-Mail-API. Sie können diese API verwenden, um E-Mail-Funktionen in Ihre Marketing- und Vertriebsanwendungen zu integrieren.

Für diejenigen, die Ihre interne Software nutzen, ändert sich kaum etwas, außer dass ihnen nun neue Funktionen zur Verfügung stehen: Sie können E-Mail-Kampagnen mit derselben Software versenden, die sie bereits für Content-Management, Marketing, Customer-Engagement, Vertrieb und Support verwenden. Im Hintergrund nimmt die RESTful-API von Mailgun jedoch Anfragen von Ihrer Softwareanwendung an Mailgun entgegen und liefert entsprechende Antworten zurück. 

Nutzen Sie die Mailgun-API, um Ihre E-Mails auf das nächste Level zu heben

Die Mailgun-API lässt sich in Ihre bestehende Software integrieren und ebnet den Weg für einfachere und leistungsstärkere E-Mail-Kampagnen. Die API kann Kundendaten aus Ihrem CRM und anderen Tools erfassen und ändern. So können Sie Massen-E-Mails an bestimmte Zielgruppensegmente senden, E-Mail-Listen anpassen und verwalten sowie detaillierte Analysen zum E-Mail-Verhalten Ihrer Kundschaft durchführen. Die E-Mail-API von Mailgun ist RESTful, was bedeutet, dass sie sich in alle E-Mail-Anbieter integrieren lässt. Sie wurde zudem mit Fokus auf Sicherheit und Zuverlässigkeit entwickelt, um die Risiken rund um Nutzerdaten zu minimieren und sicherzustellen, dass E-Mails in den Posteingängen landen und nicht im Spam-Ordner.

Benötigen Sie weitere Informationen zur E-Mail-API von Mailgun? Sie finden sie hier.