Die Vorteile von GraphQL lassen sich am besten anhand von Beispielabfragen und -antworten darstellen. Hier sind drei Beispiele von der Graphql.org Projekt-Website.
Das erste Beispiel zeigt, wie ein Kunde GraphQL-Abfragen erstellen und mit der API spezifische Felder in der gewünschten Form zurückgeben kann.
{
me {
name
}
}
Eine GraphQL API gibt höchstwahrscheinlich ein Ergebnis wie das folgende im JSON-Format zurück:
{
"me": {
"name": "Dorothy"
}
}
Ein Kunde kann, wie in diesem Beispiel zu sehen, im Rahmen einer GraphQL-Abfrage auch Argumente weitergeben:
{
human(id: "1000") {
name
location
}
}
Das Ergebnis:
{
"data": {
"human": {
"name": "Dorothy,
"location": "Kansas"
}
}
}
Danach wird es interessant. Mit GraphQL können User wiederverwendbare Fragmente definieren und Variablen zuweisen.
Angenommen, Sie möchten eine Liste mit IDs und dann eine Reihe von Datensätzen für jede dieser IDs abfragen. Mit GraphQL können Sie eine Abfrage erstellen, mit der Sie alle benötigten Informationen in einem einzigen API-Aufruf abhandeln können.
So könnte diese Abfrage:
query HeroComparison($first: Int = 3) {
leftComparison: hero(location: KANSAS) {
...comparisonFields
}
rightComparison: hero(location: OZ) {
...comparisonFields
}
}
fragment comparisonFields on Character {
name
friendsConnection(first: $first) {
totalCount
edges {
node {
name
}
}
}
}
folgendes Ergebnis zeigen:
{
"data": {
"leftComparison": {
"name": "Dorothy",
"friendsConnection": {
"totalCount": 4,
"edges": [
{
"node": {
"name": "Aunt Em"
}
},
{
"node": {
"name": "Uncle Henry"
}
},
{
"node": {
"name": "Toto"
}
}
]
}
},
"rightComparison": {
"name": "Wizard",
"friendsConnection": {
"totalCount": 3,
"edges": [
{
"node": {
"name": "Scarecrow"
}
},
{
"node": {
"name": "Tin Man"
}
},
{
"node": {
"name": "Lion"
}
}
]
}
}
}
}
Wenn Sie GitHub verwenden, können Sie sich über den GitHub GraphQL Explorer praktische Erfahrungen mit GraphQL aneignen.