当前位置: 首页 > news >正文

Shopify接口开发工具shopify-sdk踩坑

背景:
  先介绍一下shopify-sdk,它使用java语言开发,是用来做shopify接口二次开发的。做过Shopify独立站的都知道,shopify店铺有管理后台去给管理员增删改查商品和订单等数据,这些数据其实都是可以通过shopify提供的Rest API进行查询的,甚至还可以通过这些接口把商品数据同步给shopify后台。我之前就有同步shopify后台数据到本地的诉求,开搞之前当然是先找官方有没有趁手的客户端SDK可供集成啦。
踩坑过程:
   但是我发现shopify官方提供的客户端SDK只有node.js、PHP和Python写的,本人是java开发,我们后台是JAVA项目,官方也不支持啊!

在这里插入图片描述
  直到我发现gayhub上别人写的这个java版SDK心情才豁然开朗了:

在这里插入图片描述

在这里插入图片描述  然后我就开启踩坑之路了,第一个坑是这个SDK竟然没发现通过集合获取商品列表或者是通过商品获取所在集合的方法,这里我科普一下,在Shopify后台中,运营人员会去录入商品信息,也会创建商品集合,比如创建一个叫做XX系列的集合,然后属于这个集合的商品会添加到集合中,所以集合与商品的关联关系是很重要的,但是我下载了SDK源码在master分支中竟然没发现这么重要的方法!

在这里插入图片描述

   作为一个顽强的程序员,我没有放弃,然后我在项目的Pull Request中发现了惊喜:

在这里插入图片描述

在这里插入图片描述

  这不就是我想要的方法吗!这种重要的功能咋不合进主干,看了下Conversation我无语了,原来是有代码冲突导致没合进去:

在这里插入图片描述

   一方面我催着贡献者赶紧合,另一方面我决定不等了,直接把代码copy过来用,搞定!但是在我获取商品的Metafields(保存商品名称等一些属性数据)数据时又吐血了,调用getProductMetaFields方法居然报错了,从shopify返回是200正常的,SDK封装结果数据的步骤报错了,于是赶紧提了issue:

在这里插入图片描述

   最后还是自己debug发现了原因,Metafield数据会返回一个type表示数据的结构,SDK通过这个type确定使用什么结构方式去封装数据,SDK定义了一个类型枚举类,只有在这个枚举类中的type才能成功获取到,针对json类数据SDK定义的枚举值是“json”,shopify官方的Rest API文档其实也是写的“json,可实际上shopify返回的枚举值是"json_string",shopify官方文档估计没刷新,所以人家SDK开发者也没改,本地改正以后就OK了。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 零知识证明-椭圆曲线(五)
  • 虚拟机Linux(Centos7)系统静态IP设置
  • Vue3中的ref与reactive区别
  • 商家推广怎么利用C#发送视频短信
  • 如何限制docker使用的cpu,内存,存储
  • CSS选择器的魔法:探索:not-child()与:nth-child()
  • Vue3 reactive和ref
  • RateLimiter超时
  • 自建远程桌面RustDesk服务器(CentOS配置,保姆级案例)
  • 1999-2023年上市公司年报文本数据(PDF+TXT)
  • python用波形显示udp数据实现一个模拟示波器
  • 在Ubuntu 16.04上安装MySQL的方法
  • MFC工控项目实例之九选择下拉菜单主界面文本框显示菜单名
  • Java并发编程 第四章 共享模型之管程 上
  • 数据仓库系列14:数据清洗和转换的常见方法有哪些?
  • JavaScript-如何实现克隆(clone)函数
  • Android开源项目规范总结
  • HTML5新特性总结
  • js如何打印object对象
  • Mithril.js 入门介绍
  • OSS Web直传 (文件图片)
  • PHP面试之三:MySQL数据库
  • React 快速上手 - 07 前端路由 react-router
  • SOFAMosn配置模型
  • 创建一个Struts2项目maven 方式
  • 学习HTTP相关知识笔记
  • ​​​​​​​​​​​​​​Γ函数
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • #pragma multi_compile #pragma shader_feature
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • (2024)docker-compose实战 (9)部署多项目环境(LAMP+react+vue+redis+mysql+nginx)
  • (23)Linux的软硬连接
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (笔记)M1使用hombrew安装qemu
  • (补充)IDEA项目结构
  • (差分)胡桃爱原石
  • (创新)基于VMD-CNN-BiLSTM的电力负荷预测—代码+数据
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (七)Appdesigner-初步入门及常用组件的使用方法说明
  • (三)Kafka 监控之 Streams 监控(Streams Monitoring)和其他
  • (三)mysql_MYSQL(三)
  • (循环依赖问题)学习spring的第九天
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转)四层和七层负载均衡的区别
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .net core使用ef 6
  • .NET Standard 的管理策略
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .NET 设计一套高性能的弱事件机制
  • .NET建议使用的大小写命名原则
  • [120_移动开发Android]008_android开发之Pull操作xml文件