Im Februar 2012 machten sich die Entwickler von Facebook daran, eine Facebook-iPhone-App mit nativen iOS-Tools für mobile Geräte zu entwickeln. Die Entwickler waren über die Probleme mit ihren bestehenden APIs frustriert und benötigten eine bessere, effizientere Methode, um Daten abzufragen und an ihre iPhone-App zu liefern. Sie haben GraphQL entwickelt und im August 2012 mit der Auslieferung der neuen Facebook-iPhone-App erstmals in Betrieb genommen. Diese Open-Source-Datenabfragesprache für APIs wurde 2015 veröffentlicht.
GraphQL wurde größtenteils entwickelt, um die Herausforderungen beim Zugriff auf komplexe Daten über REST-APIs zu bewältigen. Normalerweise müssen REST-APIs von mehreren URLs geladen werden. Mit GraphQL-APIs können Sie mehrere Datentypen anfordern, die alle auf einem einzigen Endpunkt ausgeführt werden. Sie benötigen nicht mehrere REST-Aufrufe, um Daten zu ähnlichen Objekten anzufordern. Mit GraphQL können Sie eine einzige Abfrage erstellen, um auf dieselben Informationen zuzugreifen.
GraphQL verwendet ein Typsystem, um zu beschreiben, welche Daten abgefragt werden können. Es wird außerdem zur Validierung von Abfragen verwendet. Da GraphQL nicht an eine bestimmte Datenbank oder Speicher-Engine gebunden ist, gibt der Client die benötigten Daten in Form einer Abfrage an. Der Server sendet die Antwort in genau der gleichen Form zurück und schließt nur die angeforderten Daten ein.
GraphQL-Abfrageanforderung unter Verwendung einer JSON-ähnlichen Syntax:
Die Antwort auf eine GraphQL-Abfrage enthält nur die von Ihnen angeforderten Daten im gleichen Format:
Viele Anwendungen haben keinen formalisierten Client-Server-„Vertrag“ wie GraphQL. Produktentwickler greifen über mehrere Endpunkte auf Serverfunktionen zu und schreiben benutzerdefinierten Code, um die Daten abzurufen, die sie brauchen. Die Server definieren Verfahren und geben Daten zurück. Dieser Ansatz ist zwar einfach, wird aber mit zunehmender Anwendungskomplexität und/oder zunehmendem Systemalter immer weniger effizient.
Wenn in einer REST-API beispielsweise Informationen von einem bestimmten Endpunkt benötigt werden, kann die Anfrage nicht so geschrieben werden, dass die Felder, die die REST-API zurückgibt, eingeschränkt werden. Die Antwort stellt einen vollständigen Datensatz bereit. Mit anderen Worten: Es kommt zu einem übermäßigen Abruf von Daten. Im Gegensatz dazu verwendet die Open-Source-Datenabfragesprache GraphQL eine Syntax, mit der Sie Anfragen so anpassen können, dass sie für mehrere Objekte nur die benötigten Informationen aus bestimmten Feldern innerhalb jeder Entität zurückgeben.
GraphQL verwendet ein vordefiniertes Schema, das die zulässigen Abfragen und Datentypen beschreibt, die abgerufen werden können. Dieser Ansatz erleichtert das Entwickeln von Anwendungen, ohne dass Annahmen über die Feldtypen getroffen werden müssen. Folgendes sind weitere Vorteile von GraphQL:
Projekte, die früher Wochen dauerten, können heute innerhalb von Stunden erledigt werden.
Abfragen geben vorhersehbare Ergebnisse zurück.
Anwendungen sind schnell und stabil, weil der Server nicht die Daten kontrolliert.
Der Abruf von zu vielen oder zu wenigen Daten wird ausgeschlossen.
Netzwerk- und Speichernutzung sinken. Mit der Automatisierung beginnen sich die Einsparungen erst recht zu summieren.
Produktentwickler können genau die Daten abfragen, die sie benötigen, und zwar auf eine deklarative, hierarchische Weise, die ihrer Denk- und Arbeitsweise entgegenkommt.
Im März 2017 hat unser Entwicklungsteam unseren ersten GraphQL-Service erstellt, Rubrik Cloud Data Management (CDM) UI. Kurz nachdem wir das CDM UI-Konzept auf Herz und Nieren geprüft hatten, entschieden wir uns für GraphQL als primäre API-Architektur für Polaris, unsere SaaS-Plattform. Sie bietet Anwendern erhebliche Vorteile in Bezug auf Effizienz, Leistung und Agilität.
GraphQL kann zwar eine leistungsfähige Alternative zu REST-APIs sein, ist aber kein vollwertiger Ersatz. In einigen Szenarien sind REST-APIs möglicherweise trotzdem vorzuziehen.
Um mehr über die Open-Source-Datenabfragesprache GraphQL zu erfahren, lesen Sie unsere Einführung in GraphQL und Rubrik.