提交 /async/bulk/V1/products成功拿到UUID,随后查询状态却是404。先区分两类404:Magento Web API返回的JSON错误,和Nginx/Apache返回的HTML页面。处理方向完全不同。

确认任务记录还在

SELECT bulk_id,uuid,description,start_time,operation_count
FROM magento_bulk WHERE uuid='YOUR-BULK-UUID';

查得到说明任务创建成功。状态端点通常使用 GET /rest/V1/bulk/{bulkUuid}/status,不要把提交时的 /async/bulk/前缀照搬到查询地址。Store Code环境下也要保持REST路径规则一致。

用curl看真正响应者

curl -i -H 'Authorization: Bearer ***' \
  'https://example.com/rest/V1/bulk/YOUR-BULK-UUID/status'

Content-Type为application/json并包含Magento消息,继续查ACL和路由;若是text/html且带服务器404页,检查Web根目录、location /rest和try_files是否把请求交给index.php。

反向代理带子路径

网站发布在 /shop/ 下时,客户端常把Base URL与REST路径重复或漏拼。比较后台 Stores > Web > Base URLs、Nginx转发前缀和API客户端baseURL,最终请求只能包含一次 /shop/rest/。

不要遗漏权限差异

  • 提交Bulk所用Token与查询状态Token是否相同;
  • 集成用户角色是否包含Magento_AsyncOperations::operations;
  • Token是否已被撤销或过期;
  • WAF是否把UUID路径判成异常并返回自定义404。

修复后查询同一个旧UUID,应该看到operations_list与状态统计;再提交一条无害测试更新,验证从open到complete的完整链路。若数据库根本没有UUID记录,回头查提交请求是否只被API网关接受而未到Magento。