突然変異
これは、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
}
}
}
}
}
}
上記の例について注意しておくべきことは、query
の代わりに mutation
キーワードを使用する以外に、
構文はクエリと同じです。 クエリと同様に、ミューテーションには次が含まれます。
- 任意の操作名(
doAddToCart
) - 変数のリスト(例:
$cartId
) - 括弧内に引数(例:
cartId
は$cartId
の値に設定)を含む初期フィールド(addProductsToCart
) - 中括弧で囲まれたフィールドの部分選択
フィールドの副選択を使用すると、返されるフィールド(として割り当てられたタイプから)を柔軟に定義できます。
ミューテーションが完了した後の戻り値 addProductsToCart
~AddProductsToCartOutput
)。
前述のように、GraphQL スキーマで定義されたフィールドは、クエリのルートタイプ(通常 Query
と呼ばれます)で開始されます。 同様に、
突然変異(一般的に Mutation
と呼ばれる)には、別のルートタイプが存在します。 addProductsToCart
is a field
そのルートタイプで。
上記の例に関するその他の注意事項を次に示します。
String
とCartItemInput
の後ろに!
文字が付いている場合は、変数が必須であることを示しています。- リストを示すために指定された
CartItemInput
タイプの前後の角かっこ([]
)$cartItems
(単一の値ではなく、そのタイプの)