先确认问题层级

自定义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结构正确。