Was ist GraphQL?
GraphQL ist eine alternative Möglichkeit, mit APIs zu kommunizieren, die sich hervorragend für komplexe Datenstrukturen und den Aufbau von Schnittstellen darüber eignet. Anstatt Daten als separate, eigenständige Teile zu behandeln, zeigt GraphQL, wie Datenstücke miteinander verbunden sind und sich zueinander verhalten, was es einfach macht, Informationen anzufordern und zu erhalten.
Betrachten Sie GraphQL als eine Abfragesprache, die es Ihnen ermöglicht, mit der API zu sprechen, als ob Sie direkt mit der Datenbank sprechen würden. Die Verwendung von GraphQL ermöglicht es Ihnen, so nah wie möglich an der Datenbank zu sein, sodass Sie auswählen können, welche Daten Sie möchten und wie Sie sie erhalten, was einen erheblichen Leistungsgewinn bietet.
GraphQL wurde von Facebook erstellt, um das Problem der Skalierung mit komplexen Datenstrukturen zu lösen. Aufgrund ihrer erfolgreichen Einführung haben immer mehr Unternehmen begonnen, die Vorteile von GraphQL für ihre APIs zu erkennen.
Wichtige Unterschiede zu REST
GraphQL-APIs sind einfacher zu handhaben, als Sie vielleicht denken. Wenn Sie es gewohnt sind, mit REST-APIs zu arbeiten, sind hier die grundlegenden Unterschiede, die Sie beachten sollten:
Merkmal | REST | GraphQL |
---|---|---|
Endpunkt | Anfragen werden an mehrere Endpunkte für verschiedene Aktionen gesendet | Alle Anfragen werden an einen einzigen Endpunkt (z. B. /graphql) gesendet |
Datenabruf | Verwenden Sie GET-Methoden an bestimmten Endpunkten, um Daten abzurufen | Verwenden Sie Abfragen, um genau die benötigten Daten anzufordern, wodurch Über- oder Unterabruf reduziert wird |
Datenmodifikation/Aktionen | Verwenden Sie HTTP-Methoden wie POST, PUT, PATCH oder DELETE, um Daten zu ändern oder zu verarbeiten. | Verwenden Sie Mutationen, um Operationen durchzuführen (z. B. Parteien erstellen, Landed Costs berechnen) |
Antwortformat | Feste Antwortformate geben alle vordefinierten Felder zurück, unabhängig davon, ob sie benötigt werden | Flexible Antworten ermöglichen es, genau die Felder anzugeben, die einbezogen werden sollen, wodurch unnötiger Datentransfer reduziert wird |
Datenverbindung | Häufig sind mehrere Anfragen erforderlich, um verwandte Daten abzurufen | Verschachtelte Abfragen ermöglichen das Abrufen verwandter Daten in einer einzigen Anfrage (z. B. Parteidetails und Versandartikel zusammen). Benutzer können auch Workflows erstellen, um mehrere Mutationen innerhalb einer einzigen GraphQL-Anfrage zu verwalten, wodurch die Komplexität reduziert und die Effizienz verbessert wird |
Vorteile von GraphQL
Schnellere Antworten
GraphQL bietet schnellere Antworten durch präzisen Datenabruf, die Verwendung eines einzigen Endpunkts und verbesserte Möglichkeiten zum Batching und Caching.
Präziser Datenabruf
Eine häufige Herausforderung bei REST ist das Über- oder Unterabrufen von Daten – entweder zu viele unnötige Informationen oder nicht genug von dem, was in einem Rutsch benötigt wird. GraphQL beseitigt dies, indem es Anfragen für genau das ermöglicht, was benötigt wird – nichts mehr, nichts weniger. Diese Spezifität verbessert nicht nur die Leistung, sondern vereinfacht auch den Prozess für diejenigen, die mit der API interagieren, und macht das System effizienter und benutzerfreundlicher.
Beispiele, wie dies nützlich ist:
- Dies ermöglicht Frontend-Entwicklern, genau die Daten abzurufen, die sie für ihre UI-Komponenten benötigen, wodurch die Anzahl der Serveranfragen reduziert und die Leistung verbessert wird.
- Stellen Sie sich vor, Sie möchten eine HS-Code-Klassifizierung, Kartonsierung, Versandbewertung und ein landed cost-Angebot für Artikel in einem checkout erhalten. Wenn Sie über die GraphQL-API integriert sind, können Sie einen einzigen Aufruf mit den erforderlichen Workflows tätigen, um alles zu erhalten, was Sie benötigen (und nichts, was Sie nicht benötigen) in einer einzigen Antwort. Im Gegensatz dazu müssten Sie bei REST-APIs zuerst die Classify REST-API aufrufen, dann die Rating REST-API separat danach aufrufen und schließlich diese Klassifizierung und Versandbewertung in Ihren dritten Aufruf zur Landed Cost REST-API einfügen. Alle diese REST-APIs würden jedes Stück Information zurückgeben, das sie können, was dazu führt, dass Sie die Antwort nach den benötigten Daten durchsuchen müssen. Diese Einsparung an Geschwindigkeit hat einen Einfluss auf die schnelle Rückgabe eines vollständigen landed cost, bevor der Käufer die Seite verlässt.
Einzelner Endpunkt
GraphQL-APIs haben typischerweise einen einzigen Endpunkt, im Gegensatz zu REST-APIs, die oft mehrere Endpunkte für verschiedene Ressourcen und Aktionen haben. Dies macht es einfacher, die API zu verwalten und zu verstehen.
Batching und Caching
Die Fähigkeit von GraphQL, Abfragen zu batchen und seine Unterstützung für Caching-Strategien führen zu erheblichen Leistungsverbesserungen. Diese Funktionen reduzieren die Belastung von Netzwerken und Servern, was zu schnelleren, zuverlässigeren Interaktionen für die Benutzer führt.
Gut definierte Schemata
GraphQL-APIs basieren auf einem stark typisierten Schema. Dieses Schema definiert die Struktur der verfügbaren Daten und die durchführbaren Operationen. Dies sorgt für Klarheit darüber, welche Daten verfügbar sind und wie man darauf zugreifen kann, was die Produktivität der Entwickler verbessern und Fehler reduzieren kann. Zum Beispiel können Frontend-Teams das Graph erkunden, um genau das zu erhalten, was sie benötigen, anstatt auf einen neuen REST-Endpunkt zu warten.
Fähigkeit zur Verbesserung, ohne bestehende Clients zu stören
Das Hinzufügen neuer Funktionen oder das Ändern bestehender Funktionen in GraphQL stört die aktuellen Integrationen nicht, dank seiner flexiblen Abfragestruktur. Diese Fähigkeit stellt sicher, dass Verbesserungen vorgenommen werden können, ohne die Kompatibilität mit bestehenden Clients zu brechen.
Aktuelle Dokumentation
Dank der Introspektionsfunktion von GraphQL wird die Dokumentation automatisch generiert und mit jeder Änderung aktualisiert. Dies stellt sicher, dass alle Informationen, die den Entwicklern zur Verfügung gestellt werden, aktuell sind, wodurch Integrationsprobleme und Supportanfragen im Zusammenhang mit veralteter Dokumentation reduziert werden – eine Herausforderung, die häufig bei REST-API-Dokumentationen auftritt.
Überprüfen Sie unsere GraphQL-Dokumentation und unsere REST-Dokumentation, um den Unterschied zu sehen.
Eine Analogie
Stellen Sie sich vor, Sie sind in einem Restaurant mit einer Speisekarte, die es Ihnen ermöglicht, Gerichte genau nach Ihren Wünschen zu bestellen, im Vergleich zu einem anderen Restaurant, in dem Sie nur aus festgelegten Menüs wählen können. GraphQL ist wie das erste Restaurant:
- Genau das bekommen, was Sie wollen: Mit GraphQL können Sie genau die Daten anfordern, die Sie benötigen, nicht mehr und nicht weniger. Stellen Sie sich vor, Sie möchten nur den Namen und den Preis eines Gerichts, nicht die gesamte Liste der Zutaten. Bei REST-APIs müssen Sie die gesamten Gerichtsdetails abrufen und die Teile ignorieren, die Sie nicht benötigen.
- Ein individuelles Gericht zusammenstellen: Unsere GraphQL-APIs können leicht kombiniert werden, um maßgeschneiderte Lösungen zu erstellen, ähnlich wie in einem Buffet-Restaurant, in dem Sie ein einzigartiges Gericht genau nach Ihren Bedürfnissen kreieren können, mit Zutaten, die bereits vorhanden sind. Im Gegensatz dazu ist eine REST-API wie eine Bäckerei mit vorgefertigten Waren, die in Körben verpackt sind – Sie können nur das bestellen, was bereits erstellt wurde, und Sie können nicht nur das Stück mitnehmen, das Sie möchten.
- Weniger Wartezeit: Da Sie alle Informationen, die Sie benötigen, in einer einzigen Anfrage erhalten können, ist es, als würden Sie Ihren Kellner bitten, Ihnen Ihre Vorspeise, Hauptspeise und Nachspeise auf einmal zu bringen, anstatt zwischen den Gängen zu warten. Die meisten REST-APIs erfordern, dass Sie mehrere Anfragen senden, um verschiedene Informationen zu erhalten.
- Einfache Änderungen der Bestellungen: Wenn sich die Datenanforderungen Ihrer App ändern, macht es GraphQL einfacher, Anpassungen vorzunehmen. Sie ändern einfach die Abfrage für das, was Sie benötigen. Bei REST müssen Sie möglicherweise warten, bis die Küche (Backend) ein neues Gericht (Endpoint) für die Speisekarte erstellt, was mehr Zeit in Anspruch nimmt.
GraphQL bietet mehr Flexibilität, Effizienz und Einfachheit beim Abrufen von Daten als REST-APIs, insbesondere wenn sich Ihre Anforderungen ändern oder wachsen.
Wie Zonos GraphQL nutzt
Während wir unsere Plattform in den letzten Jahren modernisiert haben, hat Zonos die Entscheidung getroffen, neue Funktionen mit GraphQL für unsere API anstelle von REST zu entwickeln. Wir haben uns dafür entschieden, weil unsere Daten komplex und miteinander verbunden sind, ähnlich wie die Daten, die Facebook zur Erstellung von GraphQL führten. Diese Komplexität macht es schwierig, skalierbare REST-APIs zu erstellen, da die Möglichkeiten, wie Entwickler die Daten abrufen und verwenden müssen, zwischen den Implementierungen stark variieren, und REST nicht flexibel ist.
GraphQL löst dieses Problem elegant, indem es Entwicklern, die unsere API implementieren, ermöglicht, genau die Daten auszuwählen, die sie möchten, und wie sie sie abrufen. Dies ermöglicht es ihnen, es in ihre Arbeitsabläufe zu integrieren, ohne dass Zonos für jede Situation maßgeschneiderte Arbeiten (während sie warten) durchführen muss.
Das kombinierte Ergebnis der Nutzung von GraphQL und der Modernisierungen in unserer Plattform hat unsere API leistungsfähiger gemacht, die Integration von Zonos in Ihre Systeme beschleunigt und es Zonos ermöglicht, neue Funktionen schneller bereitzustellen.
Bessere Funktionen
Zonos entwickelt kontinuierlich neue Funktionen, und GraphQL ist die erste (und normalerweise einzige), die diese Updates erhält. Im Gegensatz dazu gelten unsere REST-APIs als abgelaufen und können nicht auf viele unserer neuen Funktionen zugreifen.
Beispiele für Funktionen, die auf GraphQL beschränkt sind:
- Inclusive pricing
- Labels API
- Neues Checkout und Hello
- Boxgrößen in der API-Antwort
- Dashboard-Berichterstattung
- Möglichkeit, ein DDP-Angebot anzufordern, wenn möglich, aber dennoch ein DDU-Angebot zurückzugeben, wenn DDP für dieses Land mit diesem Servicelevel nicht verfügbar ist
- Detaillierte Aufschlüsselung von Zöllen, Steuern und Gebühren (Artikelinformationen, spezifische Gebühren) – Das Dashboard wird von GraphQL unterstützt und zeigt diese Daten für alle Geschäfte an, aber die REST-API-Antwort enthält nicht dieses Detailniveau
- Testmodus (kommt bald)
Warum GraphQL
Entdecken Sie, warum wir empfehlen, über GraphQL anstelle von REST zu integrieren.
Bei Zonos bieten wir zwei Haupttypen von APIs für die Integration an: GraphQL und REST. Während REST-APIs schon länger existieren und vielen vertraut sein mögen, haben wir uns für GraphQL entschieden, um mehr Flexibilität und schnellere Innovation zu ermöglichen. Obwohl beide weiterhin unterstützt werden, erklärt dieser Leitfaden, warum GraphQL nicht nur die Zukunft unserer Integrationen ist, sondern auch die Zukunft von Integrationen im Allgemeinen und ein leistungsfähigeres Werkzeug, um Ihre heutigen Bedürfnisse zu erfüllen.