基于 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1174359.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从入门到进阶:VitePress 构建高效静态站点全指

在静态站点生成器&#xff08;SSG&#xff09;领域&#xff0c;VitePress 凭借其极致的性能、Vue 生态的天然优势以及出色的开发者体验&#xff0c;迅速成为技术文档、个人博客和轻量营销站点的优选工具。作为 Vite 团队官方推出的静态站点方案&#xff0c;它不仅继承了 Vite 的…

如何安全批量更新数据库某个字段

场景 由于前端 bug&#xff0c;尺码组的 sort 字段排序混乱&#xff0c;需要重置为根据插入时间递增的顺序。解决方案备份原数据&#xff1a;新增 sort_bk 字段&#xff0c;备份原 sort 值。批量更新&#xff1a;通过 SQL 更新 sort 字段&#xff0c;确保其从 1 开始递增&#…

Bandit游戏通关记录

https://overthewire.org/wargames/bandit/bandit6.html Bandit Level 0 → Level 1 cat readmeBandit Level 1 → Level 2 ## 法一 cat ./- ## 法二 cat < - ## 法三 cat /home/bandit1/-Bandit Level 2 → Level 3 cat "spaces in this filename" cat space…

2025年精选:武汉地区加气块定制厂家推荐榜单,国内加气块定制厂家综合实力与口碑权威评选 - 品牌推荐师

随着武汉城市建设步伐的加快及绿色建筑理念的深入,加气混凝土砌块(简称加气块)因其轻质、保温、隔音、环保等优异性能,在各类建筑工程中的应用日益广泛。市场需求的多元化与精细化,对加气块供应商的定制化能力、产…

消费入口设计:1000元免单产品如何吸引海量流量?

流量是商业的起点。今天&#xff0c;我们深入探讨这套体系是如何设计一个无法抗拒的消费入口&#xff0c;用“免费”策略吸引海量用户&#xff0c;为后续的裂变与转化打下坚实基石的。1. “免单”背后的精妙心理设计传统的打折促销已经让用户麻木。而“1000元免单产品”的杀伤力…

1.17记录

今天搭建一个新的虚拟机环境,用于以后的学习与开发。在上个学期,我完成了在虚拟机上的对数据的增删改查,所以搭建个新环境也不是太难。 我没选复杂的虚拟机集群搭建,毕竟只是预习阶段,没必要折腾那么多,就用了之…

导师推荐10个AI论文工具,专科生轻松搞定毕业论文!

导师推荐10个AI论文工具&#xff0c;专科生轻松搞定毕业论文&#xff01; AI 工具&#xff0c;让论文写作不再难 在当今这个信息爆炸的时代&#xff0c;AI 技术已经渗透到生活的方方面面&#xff0c;而学术研究也迎来了前所未有的变革。对于专科生而言&#xff0c;毕业论文的撰…

2026年金属保温装饰板材实力厂家权威推荐:金属雕花板/外墙保温装饰一体板/集成房屋墙板源头精选 - 品牌推荐官

随着我国建筑节能标准的不断提高和装配式建筑的快速发展,外墙保温装饰一体化系统正成为行业新趋势。行业数据显示,到2025年国内相关市场规模将突破900亿元。在众多生产厂家中,如何筛选出具备核心技术、规模化产能与…

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

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

救命神器!专科生必用8款AI论文工具测评TOP8

救命神器&#xff01;专科生必用8款AI论文工具测评TOP8 为什么专科生需要这份AI论文工具测评&#xff1f; 随着人工智能技术的不断进步&#xff0c;越来越多的专科生开始借助AI工具提升论文写作效率。然而&#xff0c;面对市场上五花八门的AI论文辅助软件&#xff0c;如何选择真…

2026评测:进口保健食品中哪些供应商口碑佳?保健食品集合店/进口热销品集合店/进口保健食品,进口保健食品批发排行 - 品牌推荐师

随着国民健康意识持续提升,进口保健食品市场呈现出蓬勃发展的态势。然而,面对琳琅满目的品牌与错综复杂的供应链渠道,如何甄选品质可靠、货源稳定、服务专业的供应商,成为众多经销商、零售商乃至终端消费者关注的焦…

效率革命----Browser-Use 与 Cline:昨天,AI 终于学会了“自己操作电脑” [特殊字符]️

摘要:你是否想过,AI 不应该只在对话框里陪你聊天,而应该帮你去买票、填表、修 Bug?昨天 GitHub 上最火的两个 Agent 项目——Browser-Use(让 AI 控制浏览器)和 Cline(让 AI 控制 VS Code),正在把“全自动工作流”变成现实。本文手把手教你配置这两个神器,解放双手。 …

2026年铝合金结构篷房厂家权威推荐榜单:玻璃墙铝合金篷房/轻强铝合金篷房/全透明铝合金篷房/新型铝合金篷房/快搭铝合金篷房源头厂家精选 - 品牌推荐官

随着现代商业会展、体育赛事和工业仓储对灵活空间需求的日益增长,铝合金结构篷房凭借其模块化设计、快速搭建、可重复使用及全周期成本优化等核心优势,已成为众多行业的首选临时或半永久性建筑方案。市场数据显示,该…

ACPI!ACPIGetWorkerForInteger函数中的ACPI!ACPIGetConvertToDevicePresence设置BAT1不存在

ACPI!ACPIGetWorkerForInteger函数中的ACPI!ACPIGetConvertToDevicePresence设置BAT1不存在1: kd> g Breakpoint 42 hit eax00000000 ebx899b00c8 ecx899b00c8 edx89902fe4 esif7438ca8 edi00000000 eipf74207d4 espf791ab84 ebpf791aba4 iopl0 nv up ei ng nz ac p…

L2-1 Compass评测书生大模型实践

C-Eval数据集的评测 运行时遇到如下报错&#xff1a; return next(self.gen) File "/root/.conda/envs/opencompass10/lib/python3.10/site-packages/modelscope/msdatasets/utils/hf_datasets_util.py", line 1492, in load_dataset_with_ctx dataset_res Datasets…

GitHub Copilot 使用笔记

GitHub Copilot 是 VSCode 自带的 AI Agent 插件&#xff0c;需要登录 GitHub 账号使用&#xff0c;分为免费版和付费版。 关于个人额度&#xff0c;可以在 Github 的 Copilot 菜单里查看 支持模型 添加第三方模型 通过 Manage Models 选中对应厂商。 可以通过 OpenRouter …

2026年天津办理海葬公司权威推荐榜单:海葬办理/海葬祭奠代理 /海葬代理 /海葬祭奠办理/ 海葬祭奠 /骨灰海葬办理服务商精选 - 品牌推荐官

随着绿色生态安葬理念的深入普及,海葬以其节约土地、回归自然的特性,在天津获得了越来越广泛的接受。自1990年天津推行海葬服务以来,截至2025年,已累计举办海葬活动509期,安葬骨灰超过3万份,服务家属近6万人次。…

2026年管廊/隧道/风管/水管抗震支架实力推荐榜:江苏森基建筑工程科技有限公司,适配综合管廊/交通隧道/工业厂房多场景解决方案 - 品牌推荐官

在建筑安全标准日益提升的今天,抗震支架已从一项专业设备,转变为保障城市生命线和重要建筑机电系统安全的关键设施。从地下数十米的综合管廊到纵横交错的地铁隧道,从高耸的公共建筑到精密的工业厂房,一套科学、可靠…

如何以非管理员权限运行 regedit

如何以非管理员权限运行 regedit 已完成思考&#xff0c;参考 24 篇资料 以非管理员权限运行 regedit 的完整方案&#xff08;彻底消除 UAC 提示&#xff09; 核心结论&#xff1a;regedit 默认标记为highestAvailable执行级别&#xff08;获取当前用户最高权限&#xff09;…

2026年室内篮球架厂家权威推荐榜单:落地式篮球架/壁挂式篮球架/户外篮球架/悬空式篮球架/移动篮球架源头厂家精选 - 品牌推荐官

随着全民健身国家战略的深入推进和校园体育设施的持续升级,室内篮球架作为体育场馆、学校、企业及社区的核心运动装备,其市场需求呈现稳步增长的态势。行业数据显示,室内篮球架在专业稳定性、安全防护和空间适配等方…