突然変異

これはGraphQLとAdobe Commerceのシリーズの第3部です。 ミューテーションとは、GraphQLを使用して値を保存、更新、返す機能です。

このシリーズのGraphQLに関する関連動画とチュートリアル

突然変異の例

完全なAPI仕様では、データをクエリするだけでなく、データを作成および更新する機能を提供する必要があります。

RESTは、データを変更するリクエストと、リクエストタイプまたは「動詞」(GETとPOSTまたはPUT)を使用しないリクエストを区別します。
GraphQLを使用する場合、データを修正するクエリは、別のクエリに対応するmutation キーワードによって区別されます
サーバーで定義されたスキーマのルートタイプ。

ユーザーのカートに商品を追加する場合のミューテーションの例を見てみましょう。 (これには、生成されたカート IDが必要です
ログインしている顧客のセッションまたはcreateEmptyCartの突然変異を使用している場合)。

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

上記の突然変異が、次の変数ディクショナリとともにリクエストで送信されると想像できます。

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

最終的には、次のような反応が返ってくるかもしれません。

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

上記の例について注意すべき最も重要なことは、mutationの代わりにquery キーワードを使用する以外に、
構文はクエリと同じです。 クエリと同様に、突然変異には次のものが含まれます。

  • 任意の操作名(doAddToCart
  • 変数のリスト (例:$cartId
  • 括弧内に引数(例:addProductsToCart、値cartIdに設定)を持つ初期フィールド ($cartId
  • 括弧内のフィールドの部分選択

フィールドのサブセレクションを使用すると、返すフィールドを柔軟に定義できます(
ミューテーションが完了した後にaddProductsToCartAddProductsToCartOutput)の値を返します。

前述のように、GraphQL スキーマで定義されたフィールドは、クエリのルートタイプ(通常はQueryと呼ばれます)で開始されます。 同様に,
突然変異に別のルートタイプが存在します(通常はMutationと呼ばれます)。 addProductsToCartはフィールドです
すべてのフィールドを完全に評価します。

上記の例に関するその他の注意事項:

  • !文字のサフィックス StringCartItemInputは、変数が必要であることを示します。
  • []に指定されたCartItemInput タイプの周囲の角括弧($cartItems)は、リストを示します
    作成することもできます。

GraphQLの役に立つリソース

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