突變

這是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表示變數為必要專案。
  • $cartItems指定的CartItemInput型別周圍的方括弧([])表示清單
    而不是單一值。

有用的GraphQL資源

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