【问题标题】:Is there a way to create multiple products with one Shopify API call?有没有一种方法可以通过一个 Shopify API 调用来创建多个产品?
【发布时间】:2012-08-13 13:46:12
【问题描述】:

Shopify API 允许客户一次下载包含 250 件商品的列表(产品、系列等)。有没有办法通过一个 API 调用也可以上传包含多个项目的新列表?从 api.shopify.com 的文档看来,每次调用只能创建一个项目。如果属实,例如,对于试图将店面与现有库存管理系统连接的用户来说,这将适得其反并且效率极低。

假设我们有一家商店,拥有 20,000 种产品和 200 个定制系列,为了便于论证,一个产品只属于一个系列。下载产品信息需要调用 products.xml 80 次,调用 custom_collections.xml 1 次,调用 collects.xml 80 次。我们只需要调用 161 次 API 即可执行操作,而这个数字远低于 Shopify 规定的 5 分钟内 500 次调用的限制。

但是,要执行相反的任务(根据文档,一次创建或修改相同数量的产品)将需要 20,000 次 API 调用 products.xml、200 次 custom_collections.xml 调用和 20,000 次调用collects.xml,每 5 分钟完成 500 次调用需要 7 小时。

有没有更好的方法来做到这一点?

编辑 我从下面的答案中了解到,确实,Shopify API 不允许一次创建/更新多个产品。在我看来,这是其他高效产品的一个重大缺陷,因此我将实现此功能的请求留在这里。现在,我必须创建一个服务应用程序,该应用程序将不间断地访问 API,并尽快更新产品。

【问题讨论】:

    标签: api shopify


    【解决方案1】:

    截至 2019 年 10 月,Shopify GraphQL API 确实有批量操作突变,允许完成大量工作。对于这个用例来说可能不是很好,但仍然是一个改进。

    您确实需要进行 20,000 次 API 调用才能使用 API 创建 20,000 个产品。 API 调用被定量分配,每 300 秒 500 个。你在所有方面都是正确的。

    一个简单的脚本将确保您遵守 API 限制,因此只需启动它,如果需要 7 个小时才能完成,那又如何?您无需为每次 API 调用付费。您还可以完全避免 API 问题,只需使用 CSV 文件通过 Shopify 将所有 20,000 种产品直接上传到商店。那里没有刻录任何 API 调用。

    【讨论】:

    • 我对你答案中“那又怎样”部分的评论:1)为了保持我们的库存同步而不停地点击 API 是非常低效的(阅读我对 Edward 的评论);和 2) 如果我必须这样做一次,或者偶尔一次,这不是问题......但我需要保持 Shopify 库存系统与我们当地的库存控制软件同步。
    • 你处境艰难。这里的问题不是 Shopify API,而是显然您的库存系统本身不适合在线电子商务。这是一种耻辱。听起来您只需将自己的购物车从库存系统中移出并继续前进……不需要 Shopify 之类的东西。
    • 我的看法不同:库存系统足够灵活,可以与任何基于 JSON 或 XML 的 API 进行交互。问题在于 Shopify 的 API 是如何构建为一次只更新一种产品的,这使得该过程不必要地变慢了。我认为 Shopify API 是在正确的轨道上,它只需要一个小的优化。 :-)
    • 酷。差异是微妙的。仅仅为了减少 API 调用的方便而构建许多产品的 API 调用将非常复杂。强迫您在一个简单的 API 上对 N 个新产品进行 N 次调用优于允许您进行 1 次 API 调用来构建 N 个产品。你认为的小优化不是这样的事情,它是一个重大的架构变化。举一个小例子,假设您通过一个 API 调用添加新产品的 3/4,然后您弄乱了数据并破坏了系统。结果是什么?完全回滚?让你知道你在哪里搞砸了?不简单。
    • 我同意你的观点,即简单的设计通常是可取的,但在实践中,这样的设计会导致数据流的效率极低,因此需要重新审视可能复杂也可能不复杂的优化。恕我直言,每个产品的往返 API 调用的昂贵性质是证明更改合理性的一个很好的理由(或者至少在这种情况下添加一个新功能,因为一次一个功能太麻烦而无法使用)。跨度>
    【解决方案2】:

    不,无法通过 API 批量创建产品。

    在使用库存管理系统时,我建议:

    1. 等待初始 7 小时设置或要求商家批量创建第一个负载using a CSV upload
    2. Registering for webhooks 仅告诉您已更改的产品库存,因此您只需更新集中库存系统中的这些条目
    3. 使用since_id 每这个article that talks about syncing with stores

    如果您仍需要更多的喘息空间,请联系 apps@shopify.com 以获取更高的 API 限制,说明您需要它的原因以及您还需要多少次调用。


    爱德华,Shopify 开发者倡导者

    【讨论】:

    • 最大的问题是我们不打算使用 Shopify 库存管理模块。我们的本地库存系统维护可用性/数量,即使我先将产品上传为 CSV,我仍然需要经常更新库存数量。据我了解,也没有办法更新多个产品的 inventory_quantity 字段,所以我只能选择编写一个应用程序来满足 API 24/7 更新产品数量?即使采用这种极端的解决方案,我每天更新所有产品的库存可用性也不能超过几次。
    • 我不关注;您一开始说您不打算使用 Shopify 的库存系统,但您想设置inventory_quantity 字段?
    • 当时我不知道产品更新/创建是否需要该字段,我想保持该数字正确,以便我们可以在我们的液体模板中使用它(打印消息,例如“库存少于 5 件”或“退货”)。但鉴于限制,我们放弃了这个想法,因此不再频繁更新该特定字段。
    • 因此,在初始创建 20K+ 产品后,每日更新将仅限于更改的产品。仍然可能需要一段时间,如果 API 调用获取产品列表而不是一个产品列表,那么肯定会更高效、更痛苦。
    猜你喜欢
    • 1970-01-01
    • 2020-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多