先确认问题层级
自定义REST接口传入items数组时,反序列化阶段报Class does not exist,业务方法甚至没有执行,根因通常在Service Contract类型声明。
接口DocBlock使用完整的\Vendor\Module\Api\Data\ItemInterface[],参数名与JSON字段一致。
为Data Interface提供getter/setter,并在di.xml配置preference到实现类。
修复方法
- 不要只声明array后期待Magento推断内部对象,也不要把具体Model作为公共接口类型。
- 清generated和config缓存后重新compile,先用一个最小对象跑通,再增加嵌套数组。
/** @param \Vendor\Module\Api\Data\ItemInterface[] $items */
public function save(array $items);
# di.xml配置ItemInterface到Data实现类
bin/magento setup:di:compile怎样才算解决
单个和多个对象都能反序列化为Data Interface;缺字段或错误类型返回明确400,Swagger结构正确。

