突变
这是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
) - 括号中包含参数(例如,
cartId
,设置为值$cartId
)的初始字段(addProductsToCart
) - 大括号中的字段的部分选择
字段子选择允许您灵活定义希望返回的字段(从指定为
完成变异后返回值addProductsToCart
- AddProductsToCartOutput
。
如前所述,GraphQL架构中定义的字段从查询的根类型开始(通常称为Query
)。 同样地,
突变存在另一种根类型(通常称为Mutation
)。 addProductsToCart
是一个字段
该根类型。
有关上述示例的其他几点注意事项:
!
字符后缀String
和CartItemInput
表示该变量是必需的。- 为
$cartItems
指定的CartItemInput
类型周围的方括号([]
)表示列表
而不是单个值。
3a5f7e19-f383-4af8-8983-d01154c1402f