如何使用 Ruby 对 Shopify 进行基本的 GraphQL 查询

How to do a basic GraphQL query to Shopify with Ruby

我正在尝试使用 Sinatra 对 Shopify 商店执行基本的 GraphQL 查询。有人可以帮我弄清楚我做错了什么吗?我看着他们 API 这样做:

require 'shopify_api'
require 'sinatra'

class App < Sinatra::Base
  get '/' do
    shop  = 'xxxx.myshopify.com'
    token = 'shpat_xxxxxxxxxxxxxxxxxxxxxx'
    session = ShopifyAPI::Session.new(domain: shop, token: token, api_version: "2021-04")
    ShopifyAPI::Base.activate_session(session)
    
    ShopifyAPI::GraphQL.initialize_clients
    client = ShopifyAPI::GraphQL.client

    SHOP_NAME_QUERY = client.parse <<-'GRAPHQL'
      {
        shop {
          name
        }
      }
    GRAPHQL

    result = client.query(SHOP_NAME_QUERY)
    result.data.shop.name
  end
end

这会出现此错误,但我不想使用 Rake 或 Rails。是否可以使用 Ruby 对 Shopify 进行 GraphQL 查询?

ShopifyAPI::GraphQL::InvalidClient at /
Client for API version 2021-04 does not exist because no schema file exists at `shopify_graphql_schemas/2021-04.json`. To dump the schema file, use the `rake shopify_api:graphql:dump` task

如错误所述,您需要先转储架构(请参阅此 link:https://github.com/Shopify/shopify_api/blob/master/docs/graphql.md#dump-the-schema)。

然后在与 ruby 脚本相同的根目录下创建一个 shopify_graphql_schemas 目录,并将生成的 JSON 放在那里。

如评论中所述,这需要 Rake 任务,因此您需要使用 Rails。 如果您的项目不使用 Rails,您需要快速解决问题。

您创建一个临时准系统 Rails 项目,然后使用该项目生成转储(您可以在完成此操作后删除该项目)。 这有点老套,但这是我能看到的唯一可行的方法。

新 link 模式转储 https://github.com/Shopify/shopify_api/blob/v9/docs/graphql.md#dump-the-schema

你需要使用这样的东西

rake shopify_api:graphql:dump SHOP_DOMAIN="SHOP_NAME.myshopify.com" ACCESS_TOKEN="SHOP_TOKEN" API_VERSION=2022-04

旧的已经不行了