Shopify 产品创建 422:"You need to add option values for [option name]"
Shopify product creation 422: "You need to add option values for [option name]"
更新:已解决。编码错误导致 variants
被包裹在一个额外的列表中,产生一个语法上有效但语义上无效(对于 Shopify)的 JSON 对象。
我正在尝试在 Shopify 上创建具有多个选项和多个变体的产品。一切顺利,除了我在产品选项上被绊倒了。
我正在POSTJSON的相关部分如下:
"options":[
{
"position":1,
"name":"Style"
},
{
"position":2,
"name":"Size"
},
{
"position":3,
"name":"Color"
}
每个变体看起来像这样:
{
"price":"##.##",
"option2":"S",
"compare_at_price":"##",
"weight_unit":"lb",
"option3":"Black",
"old_inventory_quantity":1,
"option1":"Men's Premium T-Shirt",
"inventory_management":null,
"weight":0.0,
"title":"Men's Premium T-Shirt / S / Black",
"requires_shipping":true,
"inventory_quantity":1,
"fulfillment_service":"manual"
},
Here's a link to the entire JSON I'm attempting to POST.
当我 POST 这个 JSON 到 https://STORE_NAME.myshopify.com/admin/products.json
时,我收到一个 422 状态代码和以下错误消息:
{'errors': {'base': ['You need to add option values for Size', 'You need to add option values for Color']}}
我不确定我发送的 JSON 有什么问题,如果能给我一些建议或正确的指示,我将不胜感激。
这是我到达现在位置的方式:
- 在字典中没有
"options"
条目的情况下尝试 POST 给了我 'The variant 'Men's Premium T-Shirt' already exists'
形式的错误;研究这个让我介绍了 "options"
条目。
- 我一开始只使用
"options": {"name": "Style", "name": "Color", "name": "Size"}
,但这创建了一个只有一个变体的产品 - "Default Title"。
- 删除样式选项会给我一条关于颜色的错误消息。删除大小也会创建单变量 "Default Title" 产品。
最后一点尤其让我怀疑某种语法错误 - 第一个选项没有正确关闭的带括号的东西,读取接下来的两个选项作为其选项值,然后剩下两个在寒冷中。但是我已经 运行 这个 JSON 通过解析器和格式化程序,它似乎可以检查。此外,谷歌搜索 Shopify "You have to add option values for"
returns 正好是 0 次匹配,引号完好无损。
锦上添花的是 Shopify 的官方文档似乎甚至不需要 "options" 块 - 请参阅 "Create a new product with multiple product variants" here - 但 Shopify 上的人 API 论坛和其他地方表明这是绝对必要的。
我觉得我在这里犯了一个简单的错误,但我终究找不到。任何指针将不胜感激。
是否有可能其中一个变体缺少 option3
或 options2
属性?这是一个包含众多选项的产品的最小示例:
{
"product": {
"title": "Cool shirt",
"variants": [{
"price": "4.00",
"option1": "big",
"option2": "mauve"
}, {
"price": "2.00",
"option1": "big",
"option2": "iridescent"
}, {
"price": "5.00",
"option1": "small",
"option2": "mauve"
}, {
"price": "1.00",
"option1": "small",
"option2": "iridescent"
}],
"options": [{
"name": "Size",
"position": 1
}, {
"name": "Color",
"position": 2
}]
}
}
编辑: 感谢您发布样本。您应该在 {"product": ... }
对象中发送产品数据。此外,您样本中的变体数据似乎有太多括号。尝试像我的示例一样将变体包含在一组方括号中。
更新:已解决。编码错误导致 variants
被包裹在一个额外的列表中,产生一个语法上有效但语义上无效(对于 Shopify)的 JSON 对象。
我正在尝试在 Shopify 上创建具有多个选项和多个变体的产品。一切顺利,除了我在产品选项上被绊倒了。
我正在POSTJSON的相关部分如下:
"options":[
{
"position":1,
"name":"Style"
},
{
"position":2,
"name":"Size"
},
{
"position":3,
"name":"Color"
}
每个变体看起来像这样:
{
"price":"##.##",
"option2":"S",
"compare_at_price":"##",
"weight_unit":"lb",
"option3":"Black",
"old_inventory_quantity":1,
"option1":"Men's Premium T-Shirt",
"inventory_management":null,
"weight":0.0,
"title":"Men's Premium T-Shirt / S / Black",
"requires_shipping":true,
"inventory_quantity":1,
"fulfillment_service":"manual"
},
Here's a link to the entire JSON I'm attempting to POST.
当我 POST 这个 JSON 到 https://STORE_NAME.myshopify.com/admin/products.json
时,我收到一个 422 状态代码和以下错误消息:
{'errors': {'base': ['You need to add option values for Size', 'You need to add option values for Color']}}
我不确定我发送的 JSON 有什么问题,如果能给我一些建议或正确的指示,我将不胜感激。
这是我到达现在位置的方式:
- 在字典中没有
"options"
条目的情况下尝试 POST 给了我'The variant 'Men's Premium T-Shirt' already exists'
形式的错误;研究这个让我介绍了"options"
条目。 - 我一开始只使用
"options": {"name": "Style", "name": "Color", "name": "Size"}
,但这创建了一个只有一个变体的产品 - "Default Title"。 - 删除样式选项会给我一条关于颜色的错误消息。删除大小也会创建单变量 "Default Title" 产品。
最后一点尤其让我怀疑某种语法错误 - 第一个选项没有正确关闭的带括号的东西,读取接下来的两个选项作为其选项值,然后剩下两个在寒冷中。但是我已经 运行 这个 JSON 通过解析器和格式化程序,它似乎可以检查。此外,谷歌搜索 Shopify "You have to add option values for"
returns 正好是 0 次匹配,引号完好无损。
锦上添花的是 Shopify 的官方文档似乎甚至不需要 "options" 块 - 请参阅 "Create a new product with multiple product variants" here - 但 Shopify 上的人 API 论坛和其他地方表明这是绝对必要的。
我觉得我在这里犯了一个简单的错误,但我终究找不到。任何指针将不胜感激。
是否有可能其中一个变体缺少 option3
或 options2
属性?这是一个包含众多选项的产品的最小示例:
{
"product": {
"title": "Cool shirt",
"variants": [{
"price": "4.00",
"option1": "big",
"option2": "mauve"
}, {
"price": "2.00",
"option1": "big",
"option2": "iridescent"
}, {
"price": "5.00",
"option1": "small",
"option2": "mauve"
}, {
"price": "1.00",
"option1": "small",
"option2": "iridescent"
}],
"options": [{
"name": "Size",
"position": 1
}, {
"name": "Color",
"position": 2
}]
}
}
编辑: 感谢您发布样本。您应该在 {"product": ... }
对象中发送产品数据。此外,您样本中的变体数据似乎有太多括号。尝试像我的示例一样将变体包含在一组方括号中。