DOCS

Warum GraphQL

Warum GraphQL

Entdecken Sie, warum wir die Integration über GraphQL anstelle von REST empfehlen.

Bei Zonos bieten wir zwei Haupttypen von APIs zur Integration an: GraphQL und REST. Während es REST APIs schon länger gibt und vielen vielleicht vertrauter sein dürfte, sind wir zu GraphQL übergegangen, um mehr Flexibilität und schnellere Innovationen 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 der Integrationen im Allgemeinen und ein leistungsfähigeres Tool, um Ihre heutigen Anforderungen zu erfüllen.

Was ist GraphQL? 

GraphQL ist eine alternative Art der Kommunikation mit APIs, die sich hervorragend für komplexe Datenstrukturen und den darauf aufbauenden Aufbau von Schnittstellen eignet. Im Gegensatz zur Behandlung von Daten als separate, eigenständige Teile zeigt GraphQL, wie Datenteile miteinander verbunden und in Beziehung gesetzt werden, wodurch es einfacher wird, Informationen anzufordern und zu erhalten.

Stellen Sie sich GraphQL als eine Abfragesprache vor, die es Ihnen ermöglicht, mit API zu kommunizieren, als ob Sie direkt mit der Datenbank sprechen würden. Durch die Verwendung von GraphQL können Sie so nah wie möglich an die Datenbank herankommen und auswählen, welche Daten Sie benötigen und wie Sie diese erhalten, was zu einem enormen Leistungsvorteil führt.

GraphQL wurde von Facebook entwickelt, um das Problem der Skalierung mit komplexen Datenstrukturen zu lösen. Aufgrund der erfolgreichen Einführung haben immer mehr Unternehmen begonnen, die Vorteile der Verwendung von GraphQL für ihre APIs zu erkennen.

Kennen Sie REST schon? GraphQL wird Ihnen bekannt vorkommen.

GraphQL APIs sind einfacher zu bearbeiten, als Sie vielleicht denken. Wenn Sie es gewohnt sind, mit REST APIs zu arbeiten, erfahren Sie hier, wie Kernkonzepte von REST in GraphQL übersetzt werden.

BesonderheitRESTGraphQL
EndpunktEs werden Anfragen für unterschiedliche Aktionen an mehrere Endpunkte gestelltAlle Anfragen werden an einen einzelnen Endpunkt gestellt (z. B. /graphql)
DatenabrufVerwenden Sie GET-Methoden auf bestimmten Endpunkten, um Daten abzurufenVerwenden Sie Abfragen, um genau die benötigten Daten anzufordern und Over- oder Under-Fetching zu vermeiden
Datenänderung/AktionenVerwenden 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)
AntwortformatFeste Antwortformate geben alle vordefinierten Felder zurück, unabhängig davon, ob sie benötigt werdenFlexible Antworten ermöglichen die genaue Angabe der einzuschließenden Felder, wodurch unnötige Datenübertragung reduziert wird (falls diese Flexibilität kompliziert wirkt, verwenden Sie einfach die vorgefertigten Abfragebeispiele in unserer Dokumentation für eine RESTful-Erfahrung)
DatenverbindungHäufig sind mehrere Anfragen erforderlich, um zusammenhängende Daten abzurufenVerschachtelte Abfragen ermöglichen den Abruf zusammenhängender Daten in einer einzigen Anfrage (z. B. Party-Details und Sendungspositionen zusammen). Nutzer 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

GraphQL bietet schnellere Antworten durch präzisen Datenabruf, die Verwendung eines einzelnen Endpunkts und verbesserte Möglichkeiten für Batching und Caching.

Präziser Datenabruf 

Eine häufige Herausforderung bei REST ist das Over- oder Under-Fetching von Daten – es werden entweder zu viele unnötige Informationen abgerufen oder nicht genug von dem, was benötigt wird, in einem Durchgang. GraphQL beseitigt dieses Problem, indem es Anfragen genau nach dem ermöglicht, was benötigt wird – nicht mehr und nicht weniger. Diese Genauigkeit verbessert nicht nur die Leistung, sondern vereinfacht auch den Prozess für alle, die mit der API arbeiten, wodurch das System effizienter und benutzerfreundlicher wird.

Beispiele, wo dies nützlich ist:

  • Dies ermöglicht es Frontend-Entwicklern, genau die Daten abzurufen, die sie für ihre UI-Komponenten benötigen, wodurch die Anzahl der Roundtrips zum Server reduziert und die Leistung verbessert wird.
  • Stellen Sie sich vor, Sie möchten eine HS-Code-Klassifizierung, Kartonisierung, eine Sendungsbewertung und ein Landed-Cost-Angebot für Artikel im Checkout erhalten. Wenn Sie über die GraphQL API integriert sind, können Sie mit den notwendigen Workflows einen einzigen Aufruf tätigen, um alles zu erhalten, was Sie brauchen (und nichts, was Sie nicht brauchen), in einer einzigen Antwort. Bei REST APIs müssten Sie dagegen zunächst die Classify REST API aufrufen, danach separat die Rating REST API aufrufen und schließlich diese Klassifizierung und Sendungsbewertung in einen dritten Aufruf der Landed Cost REST API einfließen lassen. Alle diese REST APIs würden jede Information zurückgeben, die sie liefern können, sodass Sie die Antwort nach den benötigten Daten durchsuchen müssten. Dieser Geschwindigkeitsvorteil wirkt sich darauf aus, wie schnell ein vollständiges Landed-Cost-Angebot zurückgegeben werden kann, bevor der Käufer die Seite verlässt.

Einzelner Endpunkt 

GraphQL APIs haben in der Regel einen einzigen Endpunkt, im Gegensatz zu REST APIs, die oft mehrere Endpunkte für unterschiedliche Ressourcen und Aktionen haben. Das macht es einfacher, die API zu verwalten und zu verstehen.

Batching und Caching 

Die Fähigkeit von GraphQL, Abfragen zu bündeln, sowie die Unterstützung von Caching-Strategien führen zu erheblichen Leistungsverbesserungen. Diese Funktionen reduzieren die Last auf Netzwerke und Server, was zu schnelleren und zuverlässigeren Interaktionen für Nutzer führt.

GraphQL APIs basieren auf einem stark typisierten Schema. Dieses Schema definiert die Struktur der verfügbaren Daten und die Operationen, die durchgeführt werden können. Dies schafft Klarheit darüber, welche Daten verfügbar sind und wie darauf zugegriffen werden kann, was die Produktivität von Entwicklern verbessern und Fehler reduzieren kann. Zum Beispiel können Frontend-Teams den Graphen erkunden, um genau das zu erhalten, was sie benötigen, anstatt auf einen neuen REST-Endpunkt zu warten.

Das Hinzufügen neuer Funktionen oder das Ändern bestehender Funktionen in GraphQL beeinträchtigt bestehende 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 beeinträchtigen.

Dank der Introspection-Funktion von GraphQL wird die Dokumentation automatisch generiert und bei jeder Änderung aktualisiert. Dies stellt sicher, dass alle Informationen, die Entwicklern zur Verfügung gestellt werden, aktuell sind, wodurch Integrationsprobleme und Support-Tickets im Zusammenhang mit veralteter Dokumentation reduziert werden – eine Herausforderung, die bei REST-API-Dokumentation häufig auftritt.

Sehen Sie sich unsere GraphQL-Dokumentation und unsere REST-Dokumentation an, um den Unterschied zu erkennen.

Eine Analogie 

Stellen Sie sich vor, Sie sind in einem Restaurant mit einer Speisekarte, die es Ihnen erlaubt, Gerichte genau nach Ihren Wünschen zu bestellen, im Vergleich zu einem anderen Restaurant, in dem Sie nur aus festen 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 Zutatenliste. Bei REST APIs müssen Sie die vollständigen Details des Gerichts erhalten und die Teile ignorieren, die Sie nicht benötigen.
  • Ein individuelles Gericht zusammenstellen: Unsere GraphQL API lässt sich leicht kombinieren, um individuellere Lösungen zu schaffen – ähnlich wie ein Buffet-Restaurant, in dem Sie mit den bereits vorhandenen Zutaten ein einzigartiges Gericht genau nach Ihren Bedürfnissen zusammenstellen können. Im Gegensatz dazu ist eine REST API wie eine Bäckerei mit vorgefertigten, in Körben verpackten Waren – Sie können nur bestellen, was bereits fertig ist, und Sie können nicht nur das eine Stück mitnehmen, das Sie möchten.
  • Weniger Wartezeit: Da Sie alle benötigten Informationen in einer einzigen Anfrage erhalten können, ist es, als würden Sie Ihren Kellner bitten, Vorspeise, Hauptgang und Dessert gleichzeitig zu bringen, statt zwischen den Gängen zu warten. Die meisten REST APIs erfordern mehrere Anfragen, um unterschiedliche Informationen zu erhalten.
  • Bestellungen einfach ändern: Wenn sich die Datenanforderungen Ihrer App ändern, macht GraphQL die Anpassung einfacher. 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 (Endpunkt) 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, besonders wenn sich Ihre Anforderungen ändern oder wachsen.

Wie Zonos GraphQL nutzt 

Im Zuge der Modernisierung unserer Plattform in den letzten Jahren hat sich Zonos dafür entschieden, neue Funktionalitäten für unsere API mit GraphQL statt mit REST zu entwickeln. Wir haben uns dafür entschieden, weil unsere Daten komplex und miteinander verknüpft sind, ähnlich wie die Daten, die Facebook zur Entwicklung von GraphQL bewogen haben. Diese Komplexität macht es schwierig, skalierbare REST APIs zu erstellen, da sich die Art und Weise, wie Entwickler Daten abrufen und nutzen müssen, zwischen den Implementierungen stark unterscheidet, und REST nicht flexibel genug ist.

GraphQL löst dieses Problem elegant, indem es Entwicklern, die unsere API implementieren, ermöglicht, genau die Daten auszuwählen, die sie benötigen, und zu bestimmen, wie sie diese erhalten. Dadurch können sie es in ihre Workflows integrieren, ohne dass Zonos für jede Situation individuelle Anpassungen vornehmen muss (während sie warten).

Das Zusammenspiel aus der Nutzung von GraphQL und den Modernisierungen 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 meist einzige) Schnittstelle, die diese Updates erhält. Im Gegensatz dazu gelten unsere REST APIs als End-of-Life und haben keinen Zugriff auf viele unserer neuen Funktionen.

Beispiele für Funktionen, die auf GraphQL beschränkt sind:

  • Inclusive Pricing
  • Labels API
  • New Checkout und Hello
  • Kartongrößen in der API-Antwort
  • Dashboard-Reporting
  • Möglichkeit, ein DDP-Angebot anzufordern, sofern verfügbar, aber trotzdem ein DDU-Angebot zurückzugeben, wenn DDP für dieses Land mit dieser Servicestufe nicht verfügbar ist
  • Detaillierte Aufschlüsselung von Zöllen, Steuern und Gebühren (Informationen auf Artikelebene, spezifische Gebühren) – das Dashboard wird von GraphQL angetrieben und zeigt diese Daten für alle Shops an, die REST-API-Antwort enthält diesen Detaillierungsgrad jedoch nicht
  • Testmodus (in Kürze verfügbar)

War diese Seite hilfreich?