Host Europe Blog

GraphQL: API-Abfragesprache & Alternative zu RESTful Web Services

Titelmotiv zu - GraphQL: API-Abfragesprache & Alternative zu RESTful Web Services - ein Blog Beitrag im Blog von Host Europe

GraphQL ist eine Abfragesprache für APIs und eine Laufzeitumgebung zur Ausführung der Abfragen. Ursprünglich im Jahr 2012 von Facebook ins Leben gerufen, handelt es sich bei graphql.org seit 2015 um ein Open-Source-Projekt und eine Alternative zu RESTful Web Services. Weitere große Unternehmen wie Twitter, Github, New York Times und Pinterest arbeiten mit der Software. Lernen Sie jetzt Vorteile und Einsatzmöglichkeiten kennen.

Vorteile von GraphQL im Überblick

Vergleich: GraphQL vs. REST

Bei REST-Services entscheidet der Server, welche Daten zurückgegeben werden. Bei GraphQL entscheidet der Client, welche Daten gewünscht sind und erhält nur diese. Im Schema ist klar definiert, welche Typen abgefragt werden können und wie diese aufgebaut sind.

Anfrage-Antwort-Zyklus im Vergleich.

Beispiel REST – mehrere Abfragen sind nötig:

  1. Kunden abfragen und Antwort vom Server erhalten.
  2. Bestellungen abfragen und Antwort vom Server erhalten.
  3. Produkt abfragen und Antwort vom Server erhalten.

Beispiel GraphQL – eine Abfrage reicht:

  1. Eine Anfrage wird vom Client per POST gestellt, eine beliebige Beschreibung der gewünschten Daten ist möglich und es folgt eine Antwort.

Wie ist der Ablauf bei Anfragen mit GraphQL?

Der Ablauf einer Anfrage im Überblick.

  1. Die GraphQL-API nimmt eine Client-Anfrage an und gibt diese an die GraphQL-Bibliothek weiter.
  2. Nach Übergabe in AST folgt eine syntaktische Analyse, darauf die Validierung über das Schema und das Ausführen der Resolver.
  3. Das GraphQL-Schema beschreibt die Möglichkeiten des GraphQL-Servers.
  4. Für jeden Typ gibt es einen Resolver, der Daten von der unterliegenden Schicht anfordert.

Code-Beispiel für ein Schema und die Datenabfrage:

schema {
query: QueryType
}
type QueryType {
kunde(id: string): Kunde
}
type Kunde {
name: String
bestellungen: Bestellung []
}
type Bestellung {
datum: String
produkte: Produkt []
}

Probleme und Herausforderungen beim Einsatz von GraphQL

Ein wichtiger zu beachtender Punkt betrifft das Caching: Die Abfragen gehen in der Regel per POST an einen Endpunkt, HTTP-Caching ist nicht möglich. Es gibt jedoch Alternativen, unter anderem mit Facebook DataLoader, Apollo Engine Proxy, Apollo Client und Relay.

Eine weiter Aufgabe der Entwickler dreht sich um die Sicherheit und Absicherung der API. Ohne Maßnahmen wie Timeouts und Einschränkung der Maximum Query Depth können Angriffe durch komplexe oder große Anfragen erfolgen.

Fazit

GraphQL ist eine echte Alternative zu den REST-Schnittstellen, weswegen auch die Beliebtheit stetig ansteigt. Der Hauptvorteil ist, dass Entwickler die Struktur der Antwort mit der gestellten Anfrage bestimmen können. Zudem können Sie mehrere abhängige Ressourcen bündeln. Die Dynamik der Abfragesprache hat jedoch auch Nachteile. Abfragen sind nahezu nicht speicherbar und können nicht zwischengespeichert werden. Das hat negative Auswirkungen auf die Performance.

Weitere Informationen zur Query Language für APIs

 

Bild von StockSnap auf Pixabay

Die mobile Version verlassen