Schwerpunkte:
GraphQL ist eine Abfragesprache, aber nicht wie SQL sondern eher zu verstehen als Anwendungsabfragesprache, die Anwendung definiert was wo benötigt wird
1. GraphQL-Server mit einer verbundenen Datenbank

GraphQL kümmert sich auch nicht um die Datenbank oder das Format, in dem die Daten gespeichert werden. Sie können eine SQL-Datenbank wie AWS Aurora oder eine NoSQL-Datenbank wie MongoDB verwenden.
2. GraphQL-Schicht, die vorhandene Systeme integriert
Mit GraphQL kann die Komplexität vorhandener Systeme wie Mikrodienste, ältere Infrastrukturen oder APIs von Drittanbietern hinter einer einzigen GraphQL-Schnittstelle verborgen werden.

3. Hybridansatz mit verbundener Datenbank und Integration des vorhandenen Systems
Beide Ansätze können auch kombiniert werden, und der GraphQL-Server kann Daten aus einer einzigen Datenbank sowie aus einem vorhandenen System abrufen. Dies bietet vollständige Flexibilität und überträgt die gesamte Datenverwaltungskomplexität auf den Server.

In der GraphQL-Serverimplementierung entspricht jedes Felde im angefragten Payload genau einer Funktion, die als Resolver bezeichnet wird. Der einzige Zweck einer Resolver-Funktion besteht darin, die Daten für ihr Feld abzurufen.
Wenn der Server eine Query erhält, ruft er alle Funktionen für die Felder auf, die in der Payload der Abfrage angegeben sind. Sobald alle Resolvers zurückgegeben wurden, packt der Server die Daten in dem von der Abfrage beschriebenen Format und sendet sie an den Client zurück.


Beispiel: Einfaches GraphQL Schema mit 3 Typen

Hier einige Case-Studys von Unternehmen die GraphQL implementiert haben: https://www.graphql.com/case-studies/

Wie wird die Schnittstelle im Client Implementiert?
GraphQL:
REST:
ORM like Layer über PostgreSQL-Database. PostGraphile kombiniert leistungsstarke Funktionen wie das rollenbasierte Grant-System von PostgreSQL und Sicherheitsrichtlinien auf Zeilenebene mit den erweiterten GraphQL-Look-Ahead- und Plugin-Erweiterungstechnologien. Dadurch wird sichergestellt, dass das generierte Schema sicher, performant und erweiterbar ist

Nachteile:
Welche Features müssten bei einer Custom GraphQL-Server-Implementierung händisch adaptiert werden (z.B. über ASP.Net Core GraphQL.Net):

Anmerkungen:
Herausforderungen/Probleme:

Anmerkungen:
Herausforderungen/Probleme:
Anmerkungen:
Herausforderungen/Probleme:


Anmerkungen:
Herausforderungen/Probleme:
Frontend:
Middleware:
Ist es einfach, einen GraphQL-Server zu erstellen?
Das Schema ist wie das Erstellen einer Swagger-Dokumentation für die API, nur dass in GraphQL das Schema immer erzwungen wird. Durch das Schema muss auch keinen Router und URL-Muster angeben werden. Das erstellen von GraphQL-Server kann also schneller sein als die Implementierung in REST (siehe auch Postgraphile)
Kann ich GraphQL mit <Angular / React / Ember / Redux> und anderen Apps verwenden?
Relay ist eine von mehreren GraphQL-Clients (jeodch direkt von Facebook entwickelt). Es sind andere Clients verfügbar, beispielsweise Apollo Client oder Lokka. GraphQL kann sogar ohne Client verwenden werden und rohe Zeichenfolgen an den Server senden, wie auch bei REST, frage ob das dann Sinn macht
Relay: steile Lernkurve, aber fügen Sie neben graphql noch viel hinzu: wie das Zusammenführen von Abfragen, Paginierung und verzögerte Abfragen
Apollo: Zwischenspeicherung und Integration in die Anwendungsschicht und Zustandsverwaltung. Es hat Integrationen für React, Redux, Angular 2 und andere, z. B. React Native
Lokka: Sehr simpler JS-Client, welcher beim Senden von GraphQL-Abfragen und -Antworten hilft. Es hat knapp über 100 Zeilen Code, was zeigt, wie einfach ein GraphQL-Client sein kann.