Mutazioni

Questa è la parte 3 della serie per GraphQL e Adobe Commerce. Le mutazioni consentono di salvare, aggiornare e restituire valori tramite GraphQL.

Video e tutorial correlati su GraphQL in questa serie

Esempio di mutazione

Qualsiasi specifica API completa deve offrire la possibilità non solo di eseguire query sui dati, ma anche di crearli e aggiornarli.

REST distingue tra le richieste che modificano i dati e quelle che non hanno il tipo di richiesta o "verbo" (GET vs. POST o PUT).
Quando si utilizza GraphQL, le query che modificano i dati si distinguono per la parola chiave mutation che corrisponde a un
tipo di radice nello schema definito nel server.

Osserva questa mutazione di esempio per aggiungere un prodotto al carrello di un utente. (Richiede un ID carrello generato)
per la sessione del cliente connesso o utilizzando la mutazione createEmptyCart.)

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

Puoi immaginare che la mutazione di cui sopra venga inviata in una richiesta insieme alle seguenti variabili del dizionario:

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

E infine, potresti ricevere una risposta come questa:

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

La cosa principale da notare riguardo all'esempio precedente è che, a parte l'uso della parola chiave mutation invece di query,
la sintassi è identica a una query. Come le query, la mutazione include:

  • Nome di operazione arbitrario (doAddToCart)
  • Un elenco di variabili (ad esempio, $cartId)
  • Un campo iniziale (addProductsToCart) con argomenti (ad esempio, cartId, impostato sul valore di $cartId) tra parentesi
  • Sottoselezione di campi tra parentesi graffe

La sottoselezione dei campi consente di definire in modo flessibile i campi che si desidera restituire (dal tipo assegnato come
valore restituito addProductsToCart - AddProductsToCartOutput) dopo il completamento della mutazione.

Come spiegato in precedenza, i campi definiti in uno schema GraphQL iniziano con un tipo principale per le query (in genere denominato Query). Analogamente,
esiste un altro tipo di radice per le mutazioni (in genere definito Mutation). addProductsToCart è un campo
su quel tipo di radice.

Altre note sull’esempio precedente:

  • Il suffisso del carattere ! String e CartItemInput indica che la variabile è obbligatoria.
  • Le parentesi quadre ([]) intorno al tipo CartItemInput specificato per $cartItems indicano un elenco
    di quel tipo piuttosto che un singolo valore.

Risorse GraphQL utili

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