网站首页 > java教程 正文
这篇我们参考亚马逊提供的开发文档 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 包下,可以根据自己的需求改这个包名,复制代码进来的时候跟着改下即可。
到此本文的内容都已分享完毕,祝大家顺利。
原文链接:https://juejin.cn/post/7218417913094848571
猜你喜欢
- 2025-01-06 IntelliJ IDEA详细配置图解,挖掘更多的功能
- 2025-01-06 SpringBoot集成开源IM框架MobileIMSDK,实现即时通讯IM聊天功能
- 2025-01-06 基于crudapi零代码平台后端Java SDK二次开发API认证和鉴权(二)
- 2025-01-06 微信开发最新Java SDK来了:WxJava3.9.0
- 2025-01-06 OpenTelemetry Java SDK 高级用法
- 2025-01-06 Easysearch Java SDK 2.0.x 使用指南(三)
- 2025-01-06 一篇文章,手把手教你运行百度离线人脸识别SDK-Java版
- 2025-01-06 1000个字带你一次性搞懂JavaAgent技术,反正我是彻底服了
- 2025-01-06 字节码增强技术之 Java Agent 入门
- 2025-01-06 如何开发一个轻量且高效的SDK
你 发表评论:
欢迎- 04-24Java Collections 工具类集合框架中常用算法解析
- 04-24桶排序的简单理解
- 04-24Java集合框架底层实现原理大揭秘
- 04-24Java 集合框架全面解析:选对数据结构,提升开发效率
- 04-24c#集合排序
- 04-24Java面试中常被问到的集合类深度解读
- 04-24VBA技术资料MF278:对集合进行排序
- 04-24Spring 最常用的 7 大类注解,史上最强整理
- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)