突變

這是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)括弧中
  • 大括弧中的欄位細選

欄位子選項可讓您靈活地定義想要傳回的欄位(從指派為傳回值的型別) addProductsToCart - AddProductsToCartOutput)完成變異後。

如前所述,GraphQL結構描述中定義的欄位從查詢的根型別開始(通常稱為 Query)。 同樣地,另一種根型別也存在變異(通常稱為 Mutation)。 addProductsToCart 是該根型別上的欄位。

關於上述範例的其他注意事項:

  • ! 字元尾碼 StringCartItemInput 表示變數為必要專案。
  • 方括弧([])周圍 CartItemInput 型別已指定給 $cartItems 表示該型別的清單,而不是單一值。

有用的GraphQL資源

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