Was ist GraphQL?
API-Entwicklung mit IBM API Connect kennenlernen Erfahren Sie, wie der IBM CIO die API-Kosten gesenkt hat
Illustration einer API und eines Workflows

Veröffentlicht: 8. Dezember 2023
Mitwirkende: Chrystal R. China, Michael Goodwin

Was ist GraphQL?

GraphQL ist eine Open-Source-Abfragesprache und serverseitige Laufzeit, die angibt, wie Clients mit Programmierschnittstellen (APIs) interagieren sollen. 

Mit einer intuitiven Syntax, die es Benutzern ermöglicht, API-Anfragen in einer oder wenigen Zeilen zu stellen (anstatt auf komplexe Endpunkte mit vielen Parametern zuzugreifen), erleichtern GraphQL-Technologien die Erstellung und Beantwortung von API-Anfragen. GraphQL stellt ein Upgrade von traditionellen RESTful-Architekturen dar.

In den frühen 2010er Jahren erlebte Facebook ein enormes Wachstum und einen enormen Wandel. Aber eine wachsende Nutzerbasis und eine zunehmend komplexe mobile App-Umgebung machten den bestehenden RESTful-Ansatz, der mehrere Roundtrips zu verschiedenen Endpunkten erforderte, um alle erforderlichen Abfragedaten abzurufen, unhaltbar. 

Representational State Transfer (REST) und RESTful APIs waren für den Umgang mit komplexen, datengesteuerten Benutzeroberflächen schlecht gerüstet und es kam häufig zu Latenzproblemen und Datenineffizienzen, insbesondere bei mobilen Benutzern mit begrenzten und/oder teuren Datentarifen.

Als Antwort auf diese Herausforderungen entwickelten die Facebook-Ingenieure GraphQL (zusammen mit der Single-Page-Application-Plattform React) und veröffentlichten es 2015 als Open-Source-Lösung. Letztendlich übertrug Facebook den Dienst im Jahr 2018 auf die GraphQL Foundation, zu der Mitgliedsunternehmen wie AWS, Gatsby, Intuit und IBM gehören.  

Nutzen Sie das Potenzial Ihrer Daten mit GraphQL und IBM API Connect

Erfahren Sie, wie Sie mit reaktionsschnellen GraphQL-APIs Datensilos auflösen und gleichzeitig weniger Code schreiben.

Ähnliche Inhalte

IBM API Connect erhält hohe Auszeichnungen

Wie funktionieren GraphQL-APIs?

Die deklarativen Datenabruffunktionen einer GraphQL-Architektur drehen sich um mehrere Schlüsselkomponenten und -prozesse, die jeweils eine einzigartige Rolle bei der Datenverarbeitung spielen.

Dazu gehören:

Schemen

GraphQL basiert auf einem starken Typsystem, bei dem alle Datentypen in der GraphQL-Schemadefinitionssprache (SDL) aufgezeichnet werden. Typisierte Schemas bestimmen die Datentypen, die in der API abgefragt werden können, sowie die Beziehungen zwischen den Typen und den Vorgängen, die dem Benutzer zur Verfügung stehen. Mit anderen Worten, sie definieren die Funktionen der API und die Form der Daten, mit denen Clients interagieren können.

Resolver

Jedes Feld in einem Schema wird durch einen Resolver unterstützt, der Daten füllt und die Antwort auf eine Reihe von Feldern bestimmt. Resolver – die Daten aus einer Datenbank, einem Cloud-Dienst oder praktisch jeder anderen Quelle abrufen können – stellen Anweisungen zum Umwandeln einer GraphQL-Operation (z. B. eine Abfrage, Mutation oder ein Abonnement) in Daten bereit.

Wenn ein Abfragefeld ausgeführt wird, generiert das System einen Aufruf an den entsprechenden Resolver, um den nächsten Wert zu erzeugen. Wenn ein Feld einen Skalarwert erzeugt (z. B. eine Zeichenfolge oder Zahl), wird die Ausführung abgeschlossen. Wenn ein Feld einen Objektwert erzeugt, enthält die Abfrage weitere Felder für dieses Objekt. Dieser Vorgang wird fortgesetzt, bis nur noch Skalarfelder übrig sind.

Resolver erleichtern außerdem die Datenformatierung und helfen dem System, Informationen aus verschiedenen Datenquellen zusammenzuführen.

Abfragen

Eine Datenabfrage ist die Anfrage, die der Client an den GraphQL-Server stellt; sie gibt an, welche Daten der Client abrufen möchte. Wenn eine Abfrage eingeht, validiert GraphQL sie anhand der Schemadefinitionen und führt sie – vorausgesetzt, die Abfrage ist gültig – aus. Die Struktur einer Abfrage spiegelt in der Regel die Struktur der Antwortdaten wider, was Datenanforderungen explizit und vorhersehbar macht.

Mutationen

Mutationen sind GraphQL-Vorgänge, die Daten auf dem Server erstellen, aktualisieren oder löschen. Sie sind analog zu den POST-, PUT-, PATCH- und DELETE-Vorgängen in RESTful-APIs.

Ähnlich wie bei Abfragen werden GraphQL-Mutationen anhand des Schemas und seiner Definitionen validiert. Sobald die Mutation validiert und ausgeführt wurde, gibt der Server eine JSON-Antwort zurück.

GraphQL- vs. REST-APIs 

Obwohl GraphQL-APIs zu einer effizienteren und flexibleren Alternative geworden sind, waren REST und RESTful lange der Standard für API-Architekturen. REST-API ist ein strukturierter Architekturstil für vernetzte Hypermedia-Anwendungen, der entwickelt wurde, um ein zwischenspeicherndes, zustandsloses Client-Server-Kommunikationsprotokoll (normalerweise HTTP) zu verwenden.

Sowohl GraphQL als auch REST ermöglichen es Clients, mit Servern zu kommunizieren und Daten anzufordern, aber es gibt wesentliche Unterschiede, die die Verbreitung von GraphQL-Systemen erklären. 

Abrufen von Daten

REST-APIs sind auf Ressourcen ausgerichtet (z. B. jede Art von Objekt, Daten oder Dienst, auf die der Client zugreifen kann) und funktionieren, indem sie für jede Ressource unterschiedliche Endpunkte (URLs) haben. Sie verwenden eine feste Datenstruktur, um die Form und Größe der Ressourcen zu bestimmen, die sie ihren Kunden bereitstellen.

Wenn der Client eine Ressource anfordert, sendet der Server alle mit dieser Ressource verknüpften Daten. Wenn ein Client nur eine Teilmenge der Daten benötigt, empfängt er trotzdem alle Daten (Overfetching); wenn der Client Daten benötigt, die mehrere Ressourcen umfassen, muss er oft mehrere API-Aufrufe tätigen, da die Daten von der ursprünglichen Anfrage nicht ausreichend abgerufen wurden (Unterabruf). 

GraphQL verwendet dagegen einen einzelnen Endpunkt, der eine vollständige und verständliche Beschreibung der Daten bereitstellt.  GraphQL-Abfragen können auf Ressourceneigenschaften zugreifen und Referenzen zwischen Ressourcen folgen, sodass der Client alle benötigten Daten mit einer einzigen Anfrage an den GraphQL-Server abrufen und Probleme mit übermäßigem und zu geringem Abruf vermeiden kann.

Versionierung

In einer REST-Architektur erfordert die Änderung der Datenstruktur oft, dass Teams die API versionieren, um Systemfehler und Serviceunterbrechungen für den Endbenutzer zu vermeiden. Das bedeutet, dass Entwickler jedes Mal, wenn sie die Struktur ändern, einen neuen Endpunkt erstellen müssen, was zu mehreren API-Versionen führt und den Wartungsprozess erschwert. 

GraphQL macht Versionierung überflüssig, da Clients ihre Anforderungen in der Abfrage angeben können. Wenn dem Server neue Felder hinzugefügt werden, sind Clients, die diese Felder nicht benötigen, davon nicht betroffen. Wenn Felder dagegen veraltet sind, können Clients sie weiterhin anfordern, bis sie ihre Abfragen aktualisieren. 

Fehlerbehandlung

REST-APIs verwenden HTTP-Statuscodes, um den Status/Erfolg einer Anfrage anzuzeigen. Jeder Statuscode hat eine bestimmte Bedeutung. Bei einer erfolgreichen Anfrage wird ein Statuscode 200 zurückgegeben, während bei einem Client-Fehler ein Statuscode 400 und bei einem Server-Fehler ein Statuscode 500 zurückgegeben werden kann.

GraphQL behandelt Fehler unterschiedlich. Jede Anfrage gibt unabhängig davon, ob sie zu einem Fehler geführt hat, einen Statuscode 200 OK zurück. Die Fehler werden nicht über HTTP-Statuscodes kommuniziert; stattdessen kommuniziert das System Fehler im Antworttext zusammen mit den Daten. Bei diesem Ansatz müssen Clients den Antworttext analysieren, um festzustellen, ob die Anfrage erfolgreich war, was das Debuggen von GraphQL-APIs etwas schwierig machen kann. 

Echtzeitdaten

REST bietet keine integrierte Unterstützung für Echtzeit-Updates. Wenn eine Web- oder Mobilanwendung Echtzeitfunktionen mit einer REST-API benötigt, müssen Entwickler in der Regel Techniken wie Long-Polling (bei dem der Client den Server wiederholt nach neuen Daten abfragt), vom Server gesendete Ereignisse und WebSockets implementieren, was die Anwendung komplexer machen kann. 

GraphQL bietet jedoch integrierte Unterstützung für Echtzeit-Updates mithilfe von Abonnements. Abonnements halten eine stabile Verbindung zum Server aufrecht, sodass der Server bei bestimmten Ereignissen Aktualisierungen an den Client weiterleiten kann und Clients den Überblick über relevante API-Daten behalten. 

Werkzeuge und Ökosystem

Das REST-Ökosystem ist gut etabliert und verfügt über eine breite Palette an Tools, Bibliotheken und Frameworks, die Entwicklern zur Verfügung stehen. Bei der Arbeit mit REST-APIs müssen Teams jedoch häufig durch mehrere Endpunkte navigieren und die einzigartigen Konventionen/Muster jeder API verstehen.

GraphQL ist relativ neu, aber das GraphQL-Ökosystem ist seit seiner Einführung enorm gewachsen, mit einer Vielzahl von Tools und Bibliotheken, die sowohl für die Entwicklung von Frontend- als auch Backend-Diensten verfügbar sind. Tools wie GraphiQL, Apollo Studio und GraphQL Playground bieten leistungsstarke integrierte Entwicklungsumgebungen (IDEs) im Browser zum Erkunden und Testen von GraphQL-APIs. Darüber hinaus bietet GraphQL eine starke Unterstützung für die Codegenerierung, was die clientseitige Entwicklung vereinfachen kann. 

Caching

REST-APIs basieren auf HTTP-Caching-Mechanismen wie ETags und zuletzt geänderten Headern. Caching-Strategien sind zwar effektiv, aber komplex zu implementieren und optimieren die Leistung nicht immer für alle Anwendungsfälle.

Das Zwischenspeichern von GraphQL-APIs kann aufgrund der dynamischen Natur der Abfragen schwieriger sein. Der Einsatz von persistierten Abfragen, Response Caching und Server-seitigem Caching kann diese Herausforderungen jedoch entschärfen und effiziente Caching-Strategien für GraphQL-Architekturen bieten. 

Die Zukunft von GraphQL 

Seit der Umstellung von GraphQL auf die GraphQL Foundation haben Entwickler unter anderem Implementierungen für eine Vielzahl von Programmiersprachen wie JavaScript, Python, Ruby und PHP erstellt. Und GraphQL-APIs wurden von unzähligen Unternehmen wie Github, Pinterest, Paypal, Shopify, Airbnb sowie anderen1 übernommen, wodurch immer mehr Kunden in die Lage versetzt werden, die Datenspezifikation zu rationalisieren, übermäßige oder unzureichende Netzwerkdatenübertragungen zu reduzieren und die allgemeinen Datenabrufmöglichkeiten zu verbessern.

Darüber hinaus drängen Unternehmen und Entwickler auf eine offene Föderation von GraphQL-Architekturen. In seiner aktuellen Iteration nimmt die GraphQL-Föderation separate GraphQL-Dienste auf und fasst sie in einer einzigen GraphQL-API zusammen, die als Einstiegspunkt für alle zugrunde liegenden Backend-Daten dient und den Datenabruf mit einer einzigen Anfrage erleichtert. Leider ist die Verbundimplementierung jedoch ausschließlich einem einzelnen Anbieter vorbehalten.

Als Reaktion darauf plädiert IBM für eine demokratisierte Föderation, die die Datenaggregation sowohl von GraphQL-APIs als auch von Nicht-GraphQL-APIs anstelle einer GraphQL-exklusiven Aggregation erleichtert.2

Weiterführende Lösungen
IBM API Connect

IBM API Connect ist eine Lösung für das Management des gesamten Lebenszyklus von APIs, die über eine intuitive Benutzeroberfläche die konsistente Erstellung, Verwaltung, Sicherung, Vernetzung und Monetarisierung von APIs ermöglicht und so die digitale Transformation lokal und in der Cloud unterstützt. 

API Connect entdecken

API-Entwicklung mit IBM API Connect

Mit IBM API Connect können Sie in wenigen Minuten eine GraphQL-API auf Produktionsebene erstellen und bereitstellen. Geben Sie einfach die Verbindungsdetails Ihrer Datenquelle an und schon wird eine sichere und optimierte GraphQL-API generiert.

Erkunden Sie die API-Entwicklung mit API Connect
Ressourcen GraphQL vs. REST: Was ist besser für APIs?

Erfahren Sie mehr über die beiden unterschiedlichen Ansätze dieser Frameworks für die Erstellung von APIs und die Stärken und Schwächen der beiden.

IBM wird im Gartner-Bericht für API Management als führend genannt

Lesen Sie den Gartner Magic Quadrant 2023 für API Management, um herauszufinden, warum IBM weiterhin als Marktführer im Bereich API Management anerkannt ist.

Entwicklung Ihrer APIs und Anwendungen

IBM API Connect-Toolkit ansehen.

Übersichtsseite zu IBM API Connect

Maximieren Sie den Wert Ihrer APIs für Ihr digitales Geschäft mit einer umfassenden API-Management-Lösung.

Kritische Funktionen für das API-Management

IBM wurde im Gartner-Bericht 2023 als führendes Unternehmen ausgezeichnet: Critical Capabilities for API Management.

Tutorials zu IBM API Connect

Diese Tutorials bieten praktische Anleitungen, mit denen Entwickler den Einsatz der Technologien in ihren Projekten erlernen können.

Machen Sie den nächsten Schritt

Verwenden Sie IBM API Connect, um Unternehmens-APIs über ihre gesamten Lebenszyklen hinweg zu sichern und zu verwalten. Es hilft Ihnen und Ihren Kunden, Unternehmens-APIs konsistent zu erstellen, zu verwalten, zu sichern, zu sozialisieren und zu monetarisieren, und ist ebenfalls als hoch skalierbare API Management-Plattform auf IBM Marketplace und AWS verfügbar.

API Connect entdecken Buchen Sie eine Live-Demo
Machen Sie den nächsten Schritt

Übernehmen Sie die Kontrolle über Ihr API-Ökosystem und treiben Sie gleichzeitig Ihre API-Strategie voran.

IBM API Connect entdecken Buchen Sie eine Live-Demo
Fußnoten

1IBM erwirbt das GraphQL-Startup StepZen, um sich im Bereich API Management zu verbessern“ (Link befindet sich außerhalb von ibm.com), TechCrunch, 8. Februar 2023

2Warum GraphQL einen Open Federation-Ansatz benötigt“ (Link befindet sich außerhalb von ibm.com), The New Stack, 16. November 2023