如何通过Admin API覆盖多对多关联而非新增条目?
如何通过Admin API覆盖多对多关联条目?
使用基础PATCH更新请求时,操作并未覆盖多对多关联条目,而是新增了新条目,具体情况如下:
更新前
[GET] {apiBasePath}/product/91d7e5d1e77b48ae957d90f9a5210465
{ "data": { "id": "91d7e5d1e77b48ae957d90f9a5210465", "properties": [ { "id": "4a893ae509cc42ce9084a2ac55753bd6" } ] } }
更新操作
[PATCH] {apiBasePath}/product/91d7e5d1e77b48ae957d90f9a5210465
{ "id": "91d7e5d1e77b48ae957d90f9a5210465", "properties": [ { "id": "1e2569aa85c74f8baa3a85978b42a5ec" } ] }
更新后结果
[GET] {apiBasePath}/product/91d7e5d1e77b48ae957d90f9a5210465
{ "data": { "id": "91d7e5d1e77b48ae957d90f9a5210465", "properties": [ { "id": "4a893ae509cc42ce9084a2ac55753bd6" }, { "id": "1e2569aa85c74f8baa3a85978b42a5ec" } ] } }
(注:原示例JSON存在重复key的无效格式,此处修正为标准数组结构)
预期结果
[GET] {apiBasePath}/product/91d7e5d1e77b48ae957d90f9a5210465
{ "data": { "id": "91d7e5d1e77b48ae957d90f9a5210465", "properties": [ { "id": "1e2569aa85c74f8baa3a85978b42a5ec" } ] } }
可以通过以下两种方式实现覆盖多对多关联条目:
1. 使用PUT请求替换完整资源
PUT请求会替换整个资源内容,传入包含目标关联条目的完整产品数据,即可覆盖原有所有关联:
PUT {apiBasePath}/product/91d7e5d1e77b48ae957d90f9a5210465
请求体:
{ "data": { "id": "91d7e5d1e77b48ae957d90f9a5210465", "properties": [ { "id": "1e2569aa85c74f8baa3a85978b42a5ec" } ] } }
2. 使用API支持的关联覆盖语法
部分Admin API允许通过特定操作符(如set)明确指定覆盖关联而非追加,例如:
PATCH {apiBasePath}/product/91d7e5d1e77b48ae957d90f9a5210465
请求体:
{ "id": "91d7e5d1e77b48ae957d90f9a5210465", "properties": { "set": [ { "id": "1e2569aa85c74f8baa3a85978b42a5ec" } ] } }
该语法需参考对应API的官方文档确认是否支持。
内容的提问来源于stack exchange,提问作者Ezycod
相关产品推荐
相关产品推荐

