Mutaties

Dit is deel 3 van de reeks voor GraphQL en Adobe Commerce. Mutaties zijn de mogelijkheid om waarden op te slaan, bij te werken en te retourneren met GraphQL.

Verwante video's en zelfstudies over GraphQL in deze serie

Voorbeeldmutatie

Elke volledige API-specificatie moet de mogelijkheid bieden om niet alleen query's uit te voeren, maar ook om gegevens te maken en bij te werken.

REST maakt onderscheid tussen verzoeken die gegevens veranderen en die die niet met het verzoektype of "werkwoord" (GET vs. POST of PUT).
Bij het gebruik van GraphQL wordt onderscheid gemaakt tussen query's voor gegevenswijziging en het trefwoord mutation dat overeenkomt met een andere query
hoofdtype in het schema dat op de server is gedefinieerd.

Bekijk deze voorbeeldmutatie voor het toevoegen van een product aan de kar van een gebruiker. (Hiervoor is een kaart-id vereist die is gegenereerd
voor de aangemelde klantensessie of met behulp van de createEmptyCart -mutatie.)

mutation doAddToCart(
    $cartId: String!,
    $cartItems: [CartItemInput!]!
) {
    addProductsToCart(
        cartId: $cartId
        cartItems: $cartItems
    ) {
        cart {
            total_quantity
            prices {
                grand_total {
                    value
                }
            }
        }
    }
}

U kunt zich voorstellen dat de bovenstaande mutatie wordt verzonden in een verzoek samen met het volgende Variables-woordenboek:

{
  "cartId": "{cart-id}",
  "cartItems": [
    {
      "quantity": 1,
      "sku": "VT01-RN-XS"
    }
  ]
}

Tot slot zou je een reactie als deze kunnen krijgen:

{
  "data": {
    "addProductsToCart": {
      "cart": {
        "total_quantity": 1,
        "prices": {
          "grand_total": {
            "value": 35.2
          }
        }
      }
    }
  }
}

Het belangrijkste wat u moet weten over het bovenstaande voorbeeld is dat, afgezien van het gebruik van het trefwoord mutation in plaats van query ,
de syntaxis is identiek aan een query. Net als query's omvat de mutatie:

  • Een willekeurige bewerkingsnaam (doAddToCart)
  • Een lijst met variabelen (bijvoorbeeld $cartId)
  • Een beginveld (addProductsToCart) met argumenten (bijvoorbeeld cartId , ingesteld op de waarde $cartId ) tussen haakjes
  • Een subselectie van velden tussen accolades

Met de subselectie van velden kunt u op flexibele wijze de velden definiëren die u wilt retourneren (van het type dat is toegewezen als de
retourwaarde addProductsToCart - AddProductsToCartOutput ) nadat de mutatie is voltooid.

Zoals eerder is uitgelegd, beginnen velden die zijn gedefinieerd in een GraphQL-schema op een hoofdtype voor query's (worden doorgaans een Query genoemd). Op dezelfde manier
er is een ander hoofdtype voor mutaties (wordt meestal Mutation genoemd). addProductsToCart is een veld
op dat basistype.

Een paar andere opmerkingen over het bovenstaande voorbeeld:

  • De tekens ! achtervoegsel String en CartItemInput geven aan dat de variabele verplicht is.
  • De vierkante haakjes ([]) rondom het CartItemInput type dat is opgegeven voor $cartItems , geven een lijst aan
    van dat type in plaats van één enkele waarde.

Handige GraphQL-bronnen

recommendation-more-help
3a5f7e19-f383-4af8-8983-d01154c1402f