Vergleichen REST und GraphQL - AWS AppSync

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.

Vergleichen REST und GraphQL

APIs(Anwendungsprogrammierschnittstellen) spielen eine entscheidende Rolle bei der Erleichterung des Datenaustauschs zwischen Anwendungen. Wie bereits erwähnt, APIs haben sich zwei herausragende Designansätze herauskristallisiert: GraphQL undREST. Beide dienen zwar dem grundlegenden Zweck, die Client-Server-Kommunikation zu ermöglichen, unterscheiden sich jedoch erheblich in ihrer Implementierung und ihren Anwendungsfällen.

GraphQL und REST haben mehrere Hauptmerkmale gemeinsam:

  1. Client-Server-Modell: Beide verwenden eine Client-Server-Architektur für den Datenaustausch.

  2. Staatenlosigkeit: Keiner von beiden verwaltet Informationen zur Clientsitzung zwischen Anfragen.

  3. HTTP-Basiert: Beide werden in der Regel HTTP als zugrundeliegendes Kommunikationsprotokoll verwendet.

  4. Ressourcenorientiertes Design: Beide gestalten ihren Datenaustausch auf der Grundlage von Ressourcen, die sich auf alle Daten oder Objekte beziehen, auf die der Client zugreifen und über die sie bearbeiten kann. API

  5. Flexibilität des Datenformats: JSON ist in beiden Fällen das am häufigsten verwendete Datenaustauschformat, obwohl auch andere Formate wie diese XML unterstützt HTML werden.

  6. Sprach- und datenbankunabhängig: Beide können mit jeder Programmiersprache oder Datenbankstruktur arbeiten und sind daher äußerst interoperabel.

  7. Caching-Unterstützung: Beide unterstützen Caching, sodass Clients und Server häufig aufgerufene Daten speichern können, um die Leistung zu verbessern.

GraphQL und GraphQL teilen zwar einige grundlegende Prinzipien, REST unterscheiden sich aber erheblich in ihrer Herangehensweise an API Design und Datenabruf:

  1. Anforderungsstruktur und Datenabruf

    RESTverwendet verschiedene HTTP Methoden (GET,,POST,DELETE)PUT, um Operationen mit Ressourcen durchzuführen. Dies erfordert häufig mehrere Endpunkte für unterschiedliche Ressourcen, was zu Ineffizienzen beim Datenabruf führen kann. Wenn beispielsweise ein GET Vorgang zum Abrufen der Daten eines Benutzers ausgeführt wird, kann dies dazu führen, dass Daten zu viel oder zu wenig abgerufen werden. Um die richtigen Daten zu erhalten, können Kürzung oder mehrere Operationen aufgerufen werden.

    GraphQL verwendet einen einzigen Endpunkt für alle Operationen. Es stützt sich auf Abfragen zum Abrufen von Daten und Mutationen zum Ändern von Daten. Clients können Abfragen verwenden, um mit einer einzigen Anfrage genau die Daten abzurufen, die sie benötigen, wodurch der Netzwerkaufwand durch Minimierung der Datenübertragung reduziert wird.

  2. Serverseitiges Schema

    RESTbenötigt kein serverseitiges Schema, obwohl eines optional definiert werden kann, um ein effizientes API Design und eine effiziente Dokumentation zu gewährleisten.

    GraphQL verwendet ein stark typisiertes serverseitiges Schema, um Daten und Datendienste zu definieren. Das in GraphQL Schema Definition Language (SDL) geschriebene Schema umfasst Objekttypen und Felder für jedes Objekt sowie serverseitige Resolverfunktionen, die Operationen für jedes Feld definieren.

  3. Versioning

    RESTbeinhaltet häufig Versionierung inURL, was dazu führen kann, dass mehrere Versionen gleichzeitig verwaltet werden. API Die Versionierung ist nicht verpflichtend, kann aber dazu beitragen, grundlegende Änderungen zu verhindern.

    GraphQL fördert eine kontinuierliche Weiterentwicklung von API ohne explizite Versionierung, indem es Abwärtskompatibilität erfordert. Gelöschte Felder geben Fehlermeldungen zurück, während veraltete Felder nach und nach aus alten Feldern gelöscht werden und Warnmeldungen zurückgegeben werden.

  4. Behandlung von Fehlern

    RESTist schwach typisiert, sodass die Fehlerbehandlung in den umgebenden Code integriert werden muss. Dadurch werden typbezogene Fehler (z. B. das Parsen einer Zahl als Text) möglicherweise nicht automatisch erkannt.

    Im Gegensatz dazu ist GraphQL stark typisiert und erfordert eine umfassende Schemadefinition. Auf diese Weise kann Ihr Service viele Anforderungsfehler automatisch und mit einem hohen Detaillierungsgrad identifizieren.

  5. Anwendungsfälle

    RESTist besser geeignet für:

    • Kleinere Anwendungen mit weniger komplexen Datenanforderungen.

    • Szenarien, in denen Daten und Operationen von allen Clients auf ähnliche Weise verwendet werden.

    • Anwendungen ohne komplexe Datenabfrageanforderungen.

    GraphQL ist besser geeignet für:

    • Szenarien mit begrenzter Bandbreite, in denen die Minimierung von Anfragen und Antworten entscheidend ist.

    • Anwendungen mit mehreren Datenquellen, die an einem einzigen Endpunkt kombiniert werden müssen.

    • Fälle, in denen Kundenanfragen stark variieren und unterschiedliche Antwortstrukturen erwartet werden.

    Beachten Sie, dass es möglich ist, sowohl GraphQL als auch REST APIs innerhalb einer einzigen Anwendung für verschiedene Funktionsbereiche zu verwenden. Darüber hinaus können Sie ein Upgrade auf GraphQL-Funktionen durchführen RESTfulAPI, ohne es komplett neu schreiben zu müssen. Ein Beispiel finden Sie unter So erstellen Sie GraphQL-Resolver für AWS Datenquellen.