文章目录

  • selling-partner-api-models
  • 使用 Swagger Codegen 生成代码
  • API SDK代码结构
  • 添加API SDK需要的依赖
    • 通过打包配置依赖的方式解决
    • 将依赖代码复制到API SDK中
  • 最佳实践

这篇我们参考亚马逊提供的开发文档 Generating a Java SDK with LWA token exchange and authentication 来生成SPAPI(Amazon Selling Partner API)的 Java SKD,使用SDK可以调用SPAPI的相关接口,开发自己的应用对接亚马逊平台,实现订单、履约、支付等待功能。

selling-partner-api-models

从 Github - amzn/selling-partner-api-models 下载SPAPI源码。selling-partner-api-models/clients/ 目录下有API SDK(Application Programming Interface,Software Development Kit)共用的依赖,重点关注 sellingpartner-api-aa-java(认证授权模块) 和 sellingpartner-api-documents-helper-java(API文档助手模块)。认证授权模块负责鉴权,现成的代码,只需要提供必要的参数;API文档助手模块提供了文档上传下载的代码,文档安全传输相关的加解密操作也是现成的,我们只需要使用里面现成的工具类即可,调用一些API的时候会用到。

selling-partner-api-models/models/ 目录下是各模块的API配置文件(.json),这个在官网的开发文档也可以看到,比如 Sellers API v1 model。打开 Swagger Editor,将配置文件中的内容贴到左边的编辑框里可视化API定义的内容。

使用 Swagger Codegen 生成代码

我们下载 Swagger 代码生成器(Swagger Codegen),用于根据API配置文件生成SDK代码。

echo "下载 swagger-codegen-cli-2.4.13.jar 到 ~/IdeaProjects 目录下" > /dev/null
wget https://repo1.maven.org/maven2/io/swagger/swagger-codegen-cli/2.4.13/swagger-codegen-cli-2.4.13.jar -O ~/IdeaProjects/swagger-codegen-cli.jar

以上面图中卖家账户接口的API配置(sellers.json)为例,我们使用Swagger Codegen Cli生成卖家账户接口的API SDK代码。

echo "使用 swagger-codegen-cli.jar 根据 Sellers.json 和 templates 目录中的代码模板生成 Java SDK 代码到 ~/IdeaProjects/spapi/sellers 目录下" > /dev/null
java -jar ~/IdeaProjects/swagger-codegen-cli.jar \
generate -i ~/IdeaProjects/selling-partner-api-models-main/models/sellers-api-model/Sellers.json \
-l java \
-t ~/IdeaProjects/selling-partner-api-models-main/clients/sellingpartner-api-aa-java/resources/swagger-codegen/templates/ \
-o ~/IdeaProjects/spapi/sellers

API SDK代码结构

使用IDEA打开这个项目看下代码结构,可以按自己需求选择作为Maven或者Gradle项目打开,里面两种类型的配置文件都有。

/docs 目录下是接口相关的文档,内容比较简陋,不如直接看官网的文档,比如 Sellers API v1 reference;

io.swagger.client.api 包下是API的入口类,里面定义了各个接口的调用方法,直接用就行。每个接口会定义多种方式,比如:以 Async 结尾的异步调用,需要实现回调接口;以 WithHttpInfo 结尾的方法会返回统一响应体 ApiResponse 等等。

io.swagger.client.model 是这个模块的API特有的一些实体类,比如请求响应体。

io.swagger.client.auth 和下图红框中的对象是通用的,每个模块生成代码的时候都会有,我们将多个模块的代码合到一起的时候可以共用。

添加API SDK需要的依赖

我们再回头看看 io.swagger.client.api 中的 SellerApi 会发现有依赖的类(比如:AWSAuthenticationCredentials)找不到,导致编译报错了,报错代码是生成的建造者模式(Builder)代码,设置鉴权相关的属性的。如果生成代码的时候,不通过下面这段脚本指定使用的模板,那就不会生成 Builder 代码,没有依赖报错。不过还是用模板比较好,因为最终调用接口的时候还是要设置鉴权相关属性的,用生成的 Builder 代码比较方便。

-t ~/IdeaProjects/selling-partner-api-models-main/clients/sellingpartner-api-aa-java/resources/swagger-codegen/templates/

报错的依赖都在 selling-partner-api-models/clients/sellingpartner-api-aa-java/src/com/amazon/SellingPartnerAPIAA/ 中。

通过打包配置依赖的方式解决

开发文档的例子 是将 sellingpartner-api-aa-java 模块打包生成依赖给API SDK使用,在IDEA的 Maven 窗口中,找到对应的 sellingpartnerapi-aa-java 模块,双击 install 安装这个依赖。

然后在API SDK配置这个依赖,重新加载下报错就消失了。如果公司有自己的 Maven 仓库,还可以将这个发布到仓库中,这样就不需要每个人都在本地安装一遍了。

将依赖代码复制到API SDK中

我们也可以将里面的类直接复制到API SDK中,因为都是一些简单的对象。

从 sellingpartner-api-aa-java 将 src 下连包带代码整个复制到API SDK中,并添加 sellingpartnerapi-aa-java 中需要的而这边没有的依赖,Maven 重新加载即可。

最佳实践

以上是SDK生成的全部过程,这里我们再看下较为合理的实践方式。

先创建个项目,将 sellingpartnerapi-aa-java 和 sellingpartner-api-documents-helper-java 两个模块整个复制到项目中。

然后创建子模块(比如:fruitbasket-amazon-spapi-models)用于存放生成的代码。

我们将复制过来的 sellingpartnerapi-aa-java 和 sellingpartner-api-documents-helper-java 作为依赖配置到子模块中(如下图红框)。

然后将我们生成的代码复制到子模块中。黄色框外是通用的代码,复制一份进来就可以了;黄色框中是根据不同模块的API配置文件(.json)生成的,我们适当的分下包。

最后只需要将生成的代码中的依赖配置文件指定的依赖添加到这个子模块的配置文件中,有很多依赖其实已经在 sellingpartnerapi-aa-java 和 sellingpartner-api-documents-helper-java 中有配置,可以省略。

另外生成的代码都在 io.swagger.client 包下,可以根据自己的需求改这个包名,复制代码进来的时候跟着改下即可。

到此本文的内容都已分享完毕,祝大家顺利。

亚马逊 spapi — 生成 Java SDK相关推荐

  1. 亚马逊SP-API对接JAVA版(amazon selling-partner)

    背景:     亚马逊(amazon)在2020年10月推出了新的替代mws的api方案,称为Selling Partner API(SP-API).sp-api在修改原mws的接口方式的基础上引入了 ...

  2. 亚马逊SP-API对接实践解析(amazon selling partner api)

    1.前言 亚马逊(amazon)在2020年10月推出了新的替代MWS的api方案,称为Selling Partner API(SP-API). SP-API在授权方式.权限管理.覆盖站点.支持的卖家 ...

  3. 对接亚马逊 SP-API(Amazon Selling Partner API) 第三章:对接 SDK

    目录 必要条件 1. Generating a Java SDK with LWA token exchange and authentication 1.8. SwaggerToCL 结构. 1.9 ...

  4. 对接亚马逊 SP-API(Amazon Selling Partner API) 第四章:签名

    目录 1. 前提概要 2. Authorization 介绍 Python 版本完整案例 3. 拼接 Authorization Task 1: Create a canonical request ...

  5. 对接亚马逊 SP-API(Amazon Selling Partner API) 第二章:授权

    目录 1. 授权销售伙伴 API 应用程序 1.1. Marketplace Appstore workflow 1.2. Website workflow(推荐使用) 1.3. 自行授权(仅限店铺本 ...

  6. 目录 Amazon亚马逊spapi接口开发步骤

    Amazon亚马逊spapi接口开发流程(目录) 准备亚马逊店铺,科技类公司营业执照. 店铺内开发者中心申请开发者资料. 创建AWS全球账号,创建iam账号并配置. 创建应用,填写应用相关配置信息. ...

  7. 亚马逊Amazon SP-API注册申请和授权对接开发和亚马逊SP-API开发人员注册资料的注意事项,PII申请的事项

    关于亚马逊Amazon SP-API注册申请和授权对接开发和亚马逊SP-API开发人员注册资料的注意事项, 以及PII申请的事项,我简单聊几句吧. 不聊注册过程什么的,网上这类文章太多了,只说几个关键 ...

  8. 亚马逊SP-API对接实践

    亚马逊SPAPI对接实践解析 亚马逊MWS对接 免费提供完整的跨境电商解决方案 欢迎私信

  9. 关于amazon亚马逊SP-API申请注册,amazon亚马逊SPAPI开发人员资料注册,amazon亚马逊Selling Partner API申请注册详细指导

    关于amazon亚马逊SPAPI开发人员资料注册,amazon亚马逊开发人员资料申请注册,amazon亚马逊销售合作伙伴 API申请注册,amazon亚马逊SP-API申请注册,amazon亚马逊Se ...

最新文章

  1. C 一个非递减数组 下标从0到n 元素的取值范围为从0到n的整数 判断其中是否有重复元素
  2. 6、单机运行环境搭建之 --CentOS-6.4安装MySQL 5.6.10并修改MySQL的root用户密码
  3. android 按下缩小效果松开恢复_Android自定义ScrollView实现放大回弹效果
  4. 计算机巧用剪纸做画册教案,3 巧折巧剪教案公开课一等奖
  5. [loss]Triphard loss优雅的写法
  6. C#解决Webservice第一次访问特别慢的问题
  7. .net Core 安装在linux上
  8. go 语言的web 框架
  9. SQL Management Studio Express 安装缺少MSXML6解决
  10. redis源码剖析(4):基础数据结构skiplist
  11. Python 集合 day3
  12. ES6学习笔记二(解构赋值、语法糖)
  13. Atitit 界面接口技术 cli gui nui cui管理 attilax总结 1. NUI 1 1.1. 问:什么是“自然用户界面”? 1 2. Cli到gui到nui CUI 2 2.1.
  14. 更新一波,特殊福利 !
  15. Software Testing - Browser Driver在Selenium中的作用是什么
  16. JVM内存Dump原理与在线分析实战 | 得物技术
  17. 诺基亚java模拟器exe,无需模拟器!骁龙810手机成功运行Win10:可开exe程序
  18. Android aar格式库
  19. nikebot nike机器人 如何做一个nikebot nike监控怎么能不延迟 nike如何过盾 bot 机器人 snkrs
  20. Base64加密算法原理、具体例子及Java代码

热门文章

  1. Kali Linux渗透测试——MSF实战篇(一)
  2. Linux安装mysql默认配置文件位置
  3. 矩阵旋转公式备忘(左手坐标系和右手坐标系)
  4. access month函数用法_【Access文章】日期常用函数详解
  5. java sublist_Java subList的使用
  6. 【CVPR2019_论文汇总】(按方向划分,0401 更新中)
  7. matlab里randn是什么,matlab中randn函数用法
  8. 二叉树前序后序求中序序列
  9. C++ 首次超越 Java !
  10. SQL试题以及答案(仅供参考)