Shopify 报错排障

Admin API 返回的 errors 字段怎么读

现象#

调 REST Admin API 创建商品返回 422,body 里 errors 有时是字符串、有时是对象、有时是数组,代码只按一种格式解析,真正的报错被漏掉。

原因#

  • REST 的 errors 结构随错误类型变化,字段校验失败给对象,资源冲突给字符串
  • 对象形态下键是字段名、值是该字段的错误数组,base 表示与具体字段无关的错误
  • 批量接口会在数组里逐条返回 errors,外层状态码却仍可能是 200
  • GraphQL 用的是 userErrors,与 REST 的 errors 不是同一套结构,字段名也不同

处理步骤#

  1. 先打印完整响应体而不是只看状态码:JSON.stringify(body, null, 2)
  2. 按类型分支取值,字符串直接展示,对象用 Object.entries 拼出字段名
  3. 优先读 errors.base,它通常给出最接近根因的一句话
  4. 批量写入时逐条检查数组元素里的 errors,别只判外层状态码
  5. 迁到 GraphQL 后改读 userErrors { field message code }

验收标准#

故意提交一个缺少 title 的商品,日志能打印出 Title can't be blank 这类字段级信息,而不是只显示一个 422。

本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。