Warum GraphQL über 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 über REST verwenden?

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

  1. Datenanfragen: Mit dieser Methode RESTful APIs würden Sie die benötigten Daten in der Regel über Endgeräte 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. Zu viel und zu wenig abrufen: Um die Probleme mehrerer Anfragen noch zu verschärfen, sind die Daten von jedem Endpunkt genau definiert, was bedeutet, dass Sie alle Daten zurückgeben, die für diese API definiert wurden, auch wenn Sie sie technisch nicht wollten.

    Dies kann zu übermäßigem Abrufen 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 wird mitgeliefert.

    Die gegenteilige Situation, in der wir nicht genügend Daten zurückgeben, wird als Unterabruf 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ührten.

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

  4. Skalierbare Leistung: 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, weil Ihre Anfragen zu viele oder zu wenig Daten zurückgeben (was zu mehr Anfragen führt). In beiden Situationen wird das Netzwerk unnötig belastet, was zu einer schlechten Leistung führt. Auf Seiten der Entwickler kann die Geschwindigkeit der Entwicklung reduziert werden, weil Sie nicht mehr richtig APIs sind und nicht mehr zu den Daten passen, die sie anfordern.

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 zu erstellen, APIs 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 Daten definiert, die Sie benötigen. 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 enthält 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 an beiden Enden, 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 an der Frontend-Präsentation möglicherweise nicht zu umfangreichen Änderungen am Backend, da GraphQL die einfache Änderung der Datenspezifikation ermöglicht. Sie können einfach die Form der Daten definieren oder ändern, um sie an die Anforderungen der Anwendung anzupassen, wenn sie wächst. 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.