乐趣区

关于后端:亚马逊-spapi-生成-Java-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 包下,能够依据本人的需要改这个包名,复制代码进来的时候跟着改下即可。

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

退出移动版