news 2026/6/26 1:54:22

基于 OpenAPI 规范生成亚马逊广告(Amazon Ads)Java SDK

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于 OpenAPI 规范生成亚马逊广告(Amazon Ads)Java SDK

基于 OpenAPI 规范生成亚马逊广告(Amazon Ads)SDK 的工程化实践

注意:JDK最低要求11,本演示使用JDK17进行,可以在配置中指定JDK的位置。

一、背景:为什么需要自己生成 Amazon Ads SDK

在实际项目中接入Amazon Ads API时,通常会遇到几个现实问题:

  1. 接口数量极多
    • Sponsored Products
    • Sponsored Brands
    • Sponsored Display
    • Reports
    • Profiles / OAuth
  2. 官方 Java SDK 更新慢
  3. 手写接口:
    • 参数易错
    • DTO 维护成本高
    • Ads API 升级时改动巨大
  4. 多项目、多系统复用成本高

👉 本质问题只有一个:

接口是标准的,但我们一直在“重复造轮子”。


二、Amazon Ads 官方 OpenAPI 规范能力

Amazon Ads 官方已经提供了完整的 OpenAPI 规范文件

  • OpenAPI JSON 下载地址
    https://d1y2lf8k3vrkfu.cloudfront.net/openapi/en-us/dest/AmazonAdsAPIALLMerged_prod_3p.json
  • 官方 API 文档
    https://advertising.amazon.com/API/docs/en-us/amazon-ads/1-0/apis

这个 JSON 文件中已经完整描述了:

  • 所有 API Path
  • Request / Response Model
  • 参数校验规则
  • HTTP Method 与返回码

👉 这意味着:
Amazon Ads API 天然适合“代码生成”。


三、为什么选择 OpenAPI Generator

我们最终选择了openapi-generator,原因非常明确:

  • 支持 OpenAPI 3.x
  • 支持 Java / Spring 生态
  • 可生成完整 Maven 工程
  • 可作为 SDK 独立发布
  • 最主要的是官方也是使用这个工具去生成的但是生成的JS,并不是Java

相比手写接口,生成 SDK 可以解决:

问题生成 SDK 的价值
DTO 重复维护自动生成
参数错误编译期校验
接口升级重新生成即可
多项目复用Maven 依赖
团队协作统一协议

四、工程化目标设计

在实践中,我们给自己设定了几个明确目标:

  • ✅ 使用JDK 17
  • ✅ SDK 与业务系统解耦
  • ✅ 可独立打包为Jar
  • ✅ 通过Maven 依赖引入
  • ❌ 不把业务逻辑写进 SDK
  • ❌ 不在 SDK 中处理 OAuth

最终定位很清晰:

SDK = 协议层(HTTP + Model),不是业务层


五、生成 Amazon Ads Java SDK(实战)

cli可以去maven仓库下载,地址:https://mvnrepository.com/artifact/org.openapitools/openapi-generator-cli/7.18.0

准备:
1、下载好生成器openapi-generator-cli.jar
2、openapi规范文件,AmazonAdsAPIALLMerged_prod_3p.json
准备好以上的文件之后可以进行下面的步骤了。

1. 使用 openapi-generator-cli

注意:

# 设置 JDK 路径(根据实际情况调整)$JAVA_HOME="C:\Users\Administrator\.jabba\jdk\zulu@1.17.0-0"# 执行生成命令&"$JAVA_HOME\bin\java.exe"`-jar openapi-generator-cli.jar generate`-i AmazonAdsAPIALLMerged_prod_3p.json`-g java`-o amazon-ads-client`--library resttemplate`--group-id com.sifan.integration`--artifact-id amazon-ads-client`--artifact-version1.0.0`--api-package com.sifan.integration.amazonads.api`--model-package com.sifan.integration.amazonads.model`--invoker-package com.sifan.integration.amazonads.client`--additional-propertiesjava17=true,useJakartaEe=true,dateLibrary=java8,serializationLibrary=jackson,hideGenerationTimestamp=true ` --skip-validate-spec

这一步会直接生成一个完整的 Maven Java 工程


2. 生成结果结构

amazon-ads-client ├── pom.xml └── src/main/java └── com/sifan/integration/amazonads ├── api ├── model └── client

此时它已经具备了:

  • Api 接口类
  • Request / Response Model
  • HTTP Client 封装

下面是它生成后的代码结构,是一个完整的maven项目。

六、JDK 17 + Maven 打包成 SDK

由于项目目标是Java 17,需要确保 Maven 使用的 JDK 也是 17。

mvn cleaninstall-DskipTests

成功后即可得到:

amazon-ads-client-1.0.0.jar

并自动安装到本地 Maven 仓库。


七、在业务系统中使用 SDK

在主系统中,只需要像普通依赖一样引入:

<dependency><groupId>com.sifan.integration</groupId><artifactId>amazon-ads-client</artifactId><version>1.0.0</version></dependency>

然后在manager 层封装使用:

@ComponentpublicclassSponsoredProductsManager{privatefinalCampaignsApicampaignsApi;publicSponsoredProductsManager(ApiClientapiClient){this.campaignsApi=newCampaignsApi(apiClient);}}

👉 OAuth、Token 刷新、Header 注入全部放在业务系统中完成,SDK 保持“纯净”。


八、生成 SDK 带来的实际收益

1️⃣ 开发效率显著提升

  • 不再手写几十上百个接口
  • DTO 全自动生成
  • IDE 自动补全参数

2️⃣ 降低维护成本

  • Amazon Ads API 升级 → 重新生成 SDK
  • 不再人工 diff 接口变更

3️⃣ 工程结构更清晰

  • Ads SDK = 基础设施
  • 业务系统 = 业务逻辑
  • 职责边界明确

4️⃣ 避免重复造轮子

  • 一个 SDK
  • 多个系统复用
  • 多人协作无冲突

九、总结

Amazon Ads API 本身已经通过 OpenAPI 规范标准化,与其手写接口、维护 DTO,不如直接用规范驱动代码生成

通过 openapi-generator 生成 Amazon Ads SDK,并以 Maven 依赖的形式引入系统,是一种:

更工程化、更稳定、长期成本更低的解决方案。

这套方式不仅适用于 Amazon Ads,也同样适用于SP-API(官方有提供SDK)*、第三方平台 API、内部微服务 SDK

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 15:50:07

基于Vue的二手图书交易系统的设计与实现m7za7(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末

系统程序文件列表 系统功能 用户,图书分类,图书信息 开题报告内容 基于Vue的二手图书交易系统的设计与实现开题报告 一、选题背景与意义 选题背景 在知识快速更新和环保意识日益增强的当下&#xff0c;二手图书交易市场愈发活跃。一方面&#xff0c;大量读者在完成图书阅读…

作者头像 李华
网站建设 2026/6/5 14:41:40

品牌出海哪一家好?解析Dynabridge品牌出海咨询的“实战派”打法

2026年&#xff0c;中国企业的全球化进程已从粗放的“流量红利期”进入精细化的“品牌溢价期”。随着亚马逊平台费用攀升&#xff08;佣金、广告等可能占收入50%以上&#xff09;以及集装箱运价指数的上涨&#xff0c;单纯依靠供应链成本优势的模式正面临利润增长停滞的挑战。面…

作者头像 李华
网站建设 2026/6/16 10:38:56

ssm432校园办公室报修管理系统

目录校园办公室报修管理系统摘要开发技术源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;校园办公室报修管理系统摘要 校园办公室报修管理系统&#xff08;SSM432&#xff09;是基于SSM&#xff08;SpringSpring MVCMyBatis&#xff09…

作者头像 李华
网站建设 2026/6/13 0:19:10

数据结构:队列

数据结构&#xff1a;队列&#xff08;Queue&#xff09; —— 后端开发中最常用、最容易被忽略的“先进先出”神器 队列是数据结构中最简单却又极其重要的线性结构之一&#xff0c;它的核心特性只有一句话&#xff1a; 先进先出&#xff08;FIFO - First In First Out&#…

作者头像 李华
网站建设 2026/6/19 5:58:47

【Java毕设全套源码+文档】基于springboot的健康医疗体检管理系统设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/6/15 18:53:15

【Linux】Docker容器中快速部署VNC远程桌面环境

Docker容器中快速部署VNC远程桌面环境 目录 环境说明快速部署详细步骤使用指南常见问题性能优化安全建议 环境说明 操作系统: Ubuntu 24.04 (Noble) 容器环境: Docker 桌面环境: XFCE4 VNC服务: TightVNC 显示分辨率: 1920x1080 色深: 24位真彩色快速部署 一键部署脚本 如…

作者头像 李华