GraphQL är ett kraftfullt frågespråk som gör det möjligt för klienter att endast begära den data de behöver från en server. Det hjälper dig att öka förfrågningshastigheterna eftersom du kan anpassa frågor för att bara hämta specifik data.
GraphQL har två operationstyper: frågor och mutationer. Trots sina likheter tjänar de helt olika syften.
Skillnader mellan GraphQL-frågor och mutationer
Frågor och mutationer liknar varandra genom att du använder dem för att göra förfrågningar till GraphQL API: er. De skiljer sig dock åt i syntax, körningsläge och användning.
Syntaxen för frågor och mutationer
Den grundläggande syntaxen för en GraphQL-fråga är följande:
fråga getProduct($id: ID!) {
produkt (id: $id) {
namn
pris
}
}
Här är vad den här koden står för:
- query är nyckelordet som identifierar begäran som en fråga.
- getProduct är operationens namn
- $id är variabeln
- ID! är variabeltypen.
Om du inte behöver variablerna, utelämna dem och definiera frågan så här:
fråga getProducts {
Produkter {
namn
pris
}
}
I vissa situationer kan du utelämna sökordet och namnet och skriva en GraphQL-fråga så här:
Produkter {
namn
pris
}
Även om det här formatet fungerar är det bättre att använda sökordet för läsbarheten.
Syntaxen för mutationer liknar frågor förutom att använda nyckelordet mutation.
mutation AddNewProduct ($name: String!, $price: Number!) {
addProduct (namn: $name, pris: $price) {
namn
pris
}
}
Olika exekveringslägen
En annan skillnad mellan en fråga och en mutation är att frågor körs parallellt medan mutationer körs synkront. När du kör två mutationer kommer de att utföras en efter en, i ordning
Kontrasterande användningsområden för frågor och mutationer
Du bör endast använda frågor för LÄS-operationer. Använd till exempel en fråga när du hämtar produkter från en API-slutpunkt.
Använd mutationer för CREATE-, UPDATE- och DELETE-operationer. Dessa är i huvudsak operationer som ändrar data som lagras i databasen.
Använd till exempel en mutation när du uppdaterar ett kundnamn via en orderslutpunkt.
Ta för vana att använda frågor och mutationer på rätt sätt
GraphQL är ett kraftfullt frågespråk som gör att du bara kan begära den data du behöver. Det finns två operationer du kan utföra i GraphQL: frågor och mutationer.
Dessa operationer skiljer sig i syntax, exekvering och deras avsedda användningsområden. Du bör använda frågor för READ-operationer och mutationer för CREATE-, UPDATE- och DELETE-operationer.