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

如何通过Shopify REST API获取产品列表的指定变体字段

Shopify REST API 筛选产品变体字段问题

当前请求代码

$resp = $Rest->get(
    'products',
    [],
    [
        'limit'            => 250,
        'fields'           => 'id,title,variants',
        'published_status' => 'published',
        'status'           => 'active'
    ]
);

当前响应(变体返回完整字段)

Array
(
    [0] => stdClass Object
        (
            [id] => 237462354
            [title] => Product 1 title
            [variants] => Array
                (
                    [0] => stdClass Object
                        (
                            [product_id] => 237462354
                            [id] => 1481824
                            [title] => Default Title
                            [price] => 105.99
                            [sku] => MYSKU11002
                            [position] => 1
                            [inventory_policy] => deny
                            [compare_at_price] => 
                            [fulfillment_service] => manual
                            [inventory_management] => shopify
                            [option1] => Default Title
                            [option2] => 
                            [option3] => 
                            [created_at] => 2022-08-12T10:13:39-04:00
                            [updated_at] => 2022-08-16T14:55:31-04:00
                            [taxable] => 1
                            [barcode] => 814812747124
                            [grams] => 2268
                            [image_id] => 
                            [weight] => 5
                            [weight_unit] => lb
                            [old_inventory_quantity] => 1
                            [requires_shipping] => 1
                        )

                )

        )

期望响应(仅保留变体的product_id和sku)

Array
(
    [0] => stdClass Object
        (
            [id] => 237462354
            [title] => Product 1 title
            [variants] => Array
                (
                    [0] => stdClass Object
                        (
                            [product_id] => 237462354
                            [sku] => MYSKU11002
                        )

                )

        )

问题与解答

尝试了fields=id,title,variants.sku、fields=id,title,variants/sku、fields=id,title,variants[sku]等写法均无效,想确认Shopify REST API是否支持这种嵌套字段筛选?

结论:Shopify REST API的fields参数不支持嵌套字段筛选。对于关联的嵌套资源(如产品的variants),REST API仅支持两种选择:要么返回该资源的全部字段,要么完全不返回该资源。虽然GraphQL API支持精确指定嵌套字段,但REST API没有这个能力。

替代方案

  1. 本地数据过滤:获取完整的variants数据后,在PHP代码中手动筛选所需字段,示例代码如下:
// 假设$resp是返回的产品数组
foreach ($resp as $product) {
    if (!empty($product->variants)) {
        $filteredVariants = [];
        foreach ($product->variants as $variant) {
            $filteredVariant = new stdClass();
            $filteredVariant->product_id = $variant->product_id;
            $filteredVariant->sku = $variant->sku;
            $filteredVariants[] = $filteredVariant;
        }
        $product->variants = $filteredVariants;
    }
}
  1. 改用GraphQL API:如果对返回数据量要求严格,可切换到Shopify GraphQL API,通过查询精确指定需要的字段。

内容的提问来源于stack exchange,提问作者Barry Chapman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 23:54:28