You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Commerce.js API发送POST请求创建商品时遇422错误求助

解决Commerce.js创建商品返回422错误的问题

错误原因分析

422 Unprocessable Entity错误的核心原因是提交的请求数据不符合API的验证规则,比如参数类型错误、缺少必填字段或格式不合法。

官方创建商品API核心规则(翻译整理)

根据Commerce.js官方创建商品的API规范,核心要求如下:

  • 必填字段:
    • name:商品名称,字符串类型,不能为空
    • price:商品价格,数字类型(禁止传字符串),单位为商店设置的最小货币单位
  • 常见必填补充字段:
    • inventory:库存配置,至少需包含managed(布尔值,是否开启库存管理)和stock(数字,库存数量)两个子字段
  • 权限要求:
    • 请求头的X-Authorization必须使用平台提供的私有密钥,公钥仅用于前端读取类操作,无法执行创建/修改类写操作

修正后的代码示例

const url = new URL("https://api.chec.io/v1/products");
const headers = {
  "X-Authorization": `${process.env.CHEC_SECRET_KEY}`, // 替换为私有密钥,禁止使用公钥
  "Accept": "application/json",
  "Content-Type": "application/json",
};

fetch(url, {
  method: "POST",
  headers: headers,
  body: JSON.stringify({
    name: 'Samsung', 
    price: 345, // 改为数字类型
    inventory: { // 添加库存必填配置
      managed: true,
      stock: 50
    }
  }),
})
  .then((response) => response.json())
  .then((data) => console.log(data))
  .catch((err) => console.log(err));

额外排查步骤

  • 打印完整错误响应:在response.json()的回调中打印返回数据,API会明确提示具体字段的错误(比如"errors": {"price": ["The price must be a number"]})
  • 核对密钥权限:确认使用的是Commerce后台生成的私有密钥,公钥无写操作权限
  • 检查商店配置:部分商店可能要求额外必填字段(如sku商品编码),可根据错误提示补充

内容的提问来源于stack exchange,提问作者Vasile Midrigan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 11:02:12