Mutaciones

Esta es la parte 3 de la serie para GraphQL y Adobe Commerce. Las mutaciones son la capacidad de guardar, actualizar y devolver valores mediante GraphQL.

Vídeos y tutoriales relacionados sobre GraphQL en esta serie

Mutación de ejemplo

Cualquier especificación de API completa debe ofrecer la capacidad no solo de consultar datos, sino también de crearlos y actualizarlos.

REST distingue entre solicitudes que cambian datos y aquellas que no lo hacen con el tipo de solicitud o "verbo" (GET vs. POST o PUT).
Al utilizar GraphQL, las consultas de modificación de datos se distinguen por la variable mutation palabra clave que corresponde a un tipo raíz diferente en el esquema definido en el servidor.

Observe este ejemplo de mutación para agregar un producto al carro de compras de un usuario. (Esto requiere un ID de carro de compras generado para la sesión del cliente que inició sesión o que usa el createEmptyCart mutación.)

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

Puede imaginar que la mutación anterior se envíe en una solicitud junto con el siguiente diccionario de variables:

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

Y, finalmente, podría recibir una respuesta como esta:

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

Lo más importante a tener en cuenta sobre el ejemplo anterior es que, aparte del uso de la mutation palabra clave en lugar de query, la sintaxis es idéntica a una consulta. Al igual que las consultas, la mutación incluye:

  • Un nombre de operación arbitrario (doAddToCart)
  • Una lista de variables (por ejemplo, $cartId)
  • Un campo inicial (addProductsToCart) con argumentos (por ejemplo, cartId, establezca en el valor de $cartId) entre paréntesis
  • Una subselección de campos entre llaves

La subselección de campos permite definir de forma flexible los campos que desea devolver (desde el tipo asignado como valor devuelto de addProductsToCart - AddProductsToCartOutput) una vez completada la mutación.

Como se explicó anteriormente, los campos definidos en un esquema de GraphQL comienzan en un tipo raíz para consultas (generalmente denominado Query). Del mismo modo, existe otro tipo de raíz para las mutaciones (generalmente denominado Mutation). addProductsToCart es un campo de ese tipo raíz.

Algunas otras notas sobre el ejemplo anterior:

  • El ! sufijo de caracteres String y CartItemInput indica que la variable es obligatoria.
  • Los corchetes ([]) alrededor del CartItemInput tipo especificado para $cartItems indicar una lista de ese tipo en lugar de un valor único.

Recursos útiles de GraphQL

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