View a markdown version of this page

Warum GraphQL statt REST verwenden? - AWS AppSync GraphQL

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Warum GraphQL statt REST verwenden?

REST ist einer der Eckpfeiler der Architekturstile von Web-APIs. Da die Welt jedoch immer stärker vernetzt ist, wird die Notwendigkeit, robuste und skalierbare Anwendungen zu entwickeln, zu einem dringenderen Problem werden. REST wird zwar häufig zur Erstellung von Web-APIs verwendet, es wurden jedoch mehrere wiederkehrende Nachteile bei RESTful-Implementierungen festgestellt:

  1. Datenanfragen: Mithilfe von RESTful-APIs würden Sie die benötigten Daten in der Regel über Endpunkte anfordern. Das Problem tritt auf, wenn Sie Daten haben, die möglicherweise nicht so übersichtlich verpackt sind. Die Daten, die Sie benötigen, befinden sich möglicherweise hinter mehreren Abstraktionsebenen, und die einzige Möglichkeit, die Daten abzurufen, besteht darin, mehrere Endpunkte zu verwenden, was bedeutet, dass mehrere Anfragen zum Extrahieren aller Daten gestellt werden müssen.

  2. Über- und Unterabruf: Um das Problem mehrerer Anfragen noch zu verschärfen, sind die Daten von jedem Endpunkt streng definiert, was bedeutet, dass Sie alle Daten zurückgeben, die für diese API definiert wurden, auch wenn Sie dies technisch gesehen nicht wollten.

    Dies kann zu einem Überabruf führen, was bedeutet, dass unsere Anfragen überflüssige Daten zurückgeben. Nehmen wir zum Beispiel an, Sie fordern Personaldaten des Unternehmens an und möchten die Namen der Mitarbeiter in einer bestimmten Abteilung wissen. Der Endpunkt, der die Daten zurückgibt, enthält die Namen, kann aber auch andere Daten wie Berufsbezeichnung oder Geburtsdatum enthalten. Da die API fest ist, können Sie nicht einfach nur die Namen anfordern. Der Rest der Daten ist im Lieferumfang enthalten.

    Die gegenteilige Situation, in der wir nicht genügend Daten zurückgeben, wird als unzureichendes Abrufen bezeichnet. Um alle angeforderten Daten zu erhalten, müssen Sie möglicherweise mehrere Anfragen an den Dienst stellen. Je nachdem, wie die Daten strukturiert waren, könnten Sie auf ineffiziente Abfragen stoßen, die zu Problemen wie dem gefürchteten N+1-Problem führen.

  3. Langsame Entwicklungsiterationen: Viele Entwickler passen ihre RESTful-APIs an den Ablauf ihrer Anwendungen an. Wenn ihre Anwendungen jedoch wachsen, können sowohl das Front- als auch das Backend umfangreiche Änderungen erfordern. Infolgedessen passen sich die APIs möglicherweise nicht mehr effizient oder wirkungsvoll an die Form der Daten an. Dies führt zu langsameren Produktiterationen, da API-Änderungen erforderlich sind.

  4. Leistung im großen Maßstab: Aufgrund dieser sich verschärfenden Probleme gibt es viele Bereiche, in denen die Skalierbarkeit beeinträchtigt wird. Die Leistung auf der Anwendungsseite kann beeinträchtigt werden, da Ihre Anfragen zu viele oder zu wenig Daten zurückgeben (was zu mehr Anfragen führt). Beide Situationen belasten das Netzwerk unnötig, was zu einer schlechten Leistung führt. Auf der Entwicklerseite kann die Entwicklungsgeschwindigkeit reduziert werden, da Ihre APIs repariert sind und nicht mehr zu den angeforderten Daten passen.

Das Verkaufsargument von GraphQL besteht darin, die Nachteile von REST zu überwinden. Hier sind einige der wichtigsten Lösungen, die GraphQL Entwicklern bietet:

  1. Einzelne Endpunkte: GraphQL verwendet einen einzigen Endpunkt, um Daten abzufragen. Es ist nicht erforderlich, mehrere APIs zu erstellen, um sie an die Form der Daten anzupassen. Dies führt dazu, dass weniger Anfragen über das Netzwerk gesendet werden.

  2. Abrufen: GraphQL löst die ständigen Probleme des Über- und Unterabrufs, indem es einfach die benötigten Daten definiert. Mit GraphQL können Sie die Daten an Ihre Bedürfnisse anpassen, sodass Sie nur das erhalten, wonach Sie gefragt haben.

  3. Abstraktion: GraphQL-APIs enthalten einige Komponenten und Systeme, die die Daten mithilfe eines sprachunabhängigen Standards beschreiben. Mit anderen Worten, Form und Struktur der Daten sind standardisiert, sodass sowohl das Front- als auch das Backend wissen, wie sie über das Netzwerk gesendet werden. Dies ermöglicht es Entwicklern auf beiden Seiten, mit den Systemen von GraphQL zu arbeiten und nicht um sie herum.

  4. Schnelle Iterationen: Aufgrund der Standardisierung der Daten sind Änderungen an einem Ende der Entwicklung am anderen Ende möglicherweise nicht erforderlich. Beispielsweise führen Änderungen der Frontend-Präsentation möglicherweise nicht zu umfangreichen Backend-Änderungen, da GraphQL eine einfache Änderung der Datenspezifikation ermöglicht. Sie können die Form der Daten einfach definieren oder ändern, um sie an die Bedürfnisse der wachsenden Anwendung anzupassen. Dies führt zu weniger potenziellem Entwicklungsaufwand.

Dies sind nur einige der Vorteile von GraphQL. In den nächsten Abschnitten erfahren Sie, wie GraphQL strukturiert ist und welche Eigenschaften es zu einer einzigartigen Alternative zu REST machen.