提问者:小点点

Shopify店面API:使用GraphQL获取引用变量


我正在使用Shopify店面应用编程接口和重音来尝试获得一个特定的变体,但它对我不起作用。

简短版本:当我在网站上选择一个变体时,我会得到url:(…url…)?变量=31696763027492。在GraphQL中变量的=之后,如何获得这些数字?它与ID不匹配。

长版本...

在产品变体中,我指的是另一个产品的变体(带重音)。我需要得到的是我引用的变体。

当我取出产品中引用的变量(作为元字段,使用GraphQL)时,我得到以下结果:

{
"key": "products_in_package",
"value": "pakke-produkt-gavepose:31696763027492"
}

我的问题是数值后面的数字。我发现这些是在“实际”购物网站(((... url...)上选择变体时,产品网址后面的数字?变体=31696763027492),但我不知道如何使用它们,因为我无法通过GraphQL在实际变体上找到这些数字。

它与“id”或我在变体上能找到的任何其他内容都不匹配。如果我试图获取productByHandle,也不能包含这些数字。

那么,对于如何使用它通过GraphQL获得实际的产品变体,有人有什么想法吗?或者我可以做些什么来将一个特定的产品变体连接到另一个产品变体?


共3个答案

匿名用户

变量ID和GraphQL变量ID密切相关。

  • 变量id-31646396055604
  • GraphQL变量id-gid://shopify/ProductVariant/31646396055604

GraphQL ID与Variant ID相同,但必须在它之前添加字符串gid://shop ify/productVariant/

因此,您的GraphQL请求将变成这样:

{
  productVariant(id:"gid://shopify/ProductVariant/31646396055604"){
    title
    product{
      id
    }
  }
}

匿名用户

店面API和管理API返回不同格式的Id

>

  • 店面API:“Z2lkOi8vc2hvcGlmeS9Qcm9kdWN0LzQ3NjA3ODY1MDE3MDM=“

    管理API:"gid://shop ify/Products/4760786501703"

    但是彼此之间有一种转换方式,使用函数atob

    atob("Z2lkOi8vc2hvcGlmeS9Qcm9kdWN0LzQ3NjA3ODY1MDE3MDM=")将获得Admin API Id

    对于NodeJS包:https://www.npmjs.com/package/atob

  • 匿名用户

    问题是(或者曾经是),当您通过GraphQL从产品中获得id时,这些数字不是您所获得的。你会得到一个更长的id,比如"Z2lkOi8vc2hvcGlmeS9Qcm9kdWN0VmFyaWFudC8zMTY5NDA3MjQxNDI0NA=="。

    但是,我发现在您提到的id上使用btoa()JavaScript函数(gid://shopify/ProductVariant/31646396055604),我从产品本身获得了长id。所以问题解决了!

    相关问题