使用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
相关产品推荐
相关产品推荐

