Admin API 返回的 errors 字段怎么读
现象#
调 REST Admin API 创建商品返回 422,body 里 errors 有时是字符串、有时是对象、有时是数组,代码只按一种格式解析,真正的报错被漏掉。
原因#
- REST 的 errors 结构随错误类型变化,字段校验失败给对象,资源冲突给字符串
- 对象形态下键是字段名、值是该字段的错误数组,base 表示与具体字段无关的错误
- 批量接口会在数组里逐条返回 errors,外层状态码却仍可能是 200
- GraphQL 用的是 userErrors,与 REST 的 errors 不是同一套结构,字段名也不同
处理步骤#
- 先打印完整响应体而不是只看状态码:
JSON.stringify(body, null, 2) - 按类型分支取值,字符串直接展示,对象用
Object.entries拼出字段名 - 优先读
errors.base,它通常给出最接近根因的一句话 - 批量写入时逐条检查数组元素里的
errors,别只判外层状态码 - 迁到 GraphQL 后改读
userErrors { field message code }
验收标准#
故意提交一个缺少 title 的商品,日志能打印出 Title can't be blank 这类字段级信息,而不是只显示一个 422。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。