ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

零样板代码调用REST API:spring-addons结合OpenAPI生成@HttpExchange代理完整教程

2026/8/21 16:29:33 拓冰建站 浏览量
零样板代码调用REST API:spring-addons结合OpenAPI生成@HttpExchange代理完整教程 零样板代码调用REST APIspring-addons结合OpenAPI生成HttpExchange代理完整教程【免费下载链接】spring-addonsAdditional Spring Boot auto-configuration for OAuth2 / OpenID REST项目地址: https://gitcode.com/gh_mirrors/sp/spring-addons在 Spring 项目中调用第三方 REST API你是不是还在手写RestTemplate、拼接 URL、管理认证信息spring-addons作为一套为 OAuth2 / OpenID 与 REST 场景量身打造的 Spring Boot 自动配置扩展配合 OpenAPI 规范与HttpExchange代理能让你以近乎零样板代码的方式消费任何 REST API先自动生成接口再用一行配置注入客户端。本文面向新手带你完整走通这条高效开发路径。什么是 spring-addons为什么它能实现零样板调用 REST APIspring-addons 提供了多个开箱即用的 Starter其中与本教程最相关的是spring-addons-starter-rest。它的职责非常简单用application.yml配置代替手写代码自动创建并注入RestClient/WebClient客户端 Bean。你不再需要关心请求的授权方式Bearer Token、Basic、静态 API Key基础路径与部署环境切换HTTP 代理、连接超时、读取超时SSL 证书校验策略底层ClientHttpRequestFactory的选择而HttpExchange是 Spring 6 引入的声明式 HTTP 接口只需定义接口方法运行时由框架自动生成实现。两者结合调用 REST API 的代码量被压缩到极致。三步走从 OpenAPI 规范到可调用的 REST 客户端要真正实现零样板最优雅的链路是这样的用springdoc-openapi从服务端RestController源码生成 OpenAPI 规范openapi.json用openapi-generator-maven-plugin从规范自动生成HttpExchange客户端接口用spring-addons-starter-rest自动配置RestClient/WebClient并通过HttpExchangeProxyFactoryBean生成接口实现并注册为 Bean官方文档spring-addons-starter-rest/README.md第一步用 springdoc-openapi 生成 OpenAPI 规范服务端只需引入 springdoc 依赖启动应用后即可访问/v3/api-docs获得标准 OpenAPI 规范。也可以借助springdoc-openapi-maven-plugin在构建阶段自动生成并保存为文件例如samples/springdoc-openapi-2494-servlet/pom.xml中配置的输出目录就是项目根目录最终产物见 openapi.json。第二步用 openapi-generator 生成 HttpExchange 接口拿到规范后在客户端工程里配置openapi-generator-maven-plugin项目根 pom.xml 已托管了该插件版本选择适合 Spring 6 的生成器即可输出如下风格的接口HttpExchange(accept MediaType.APPLICATION_JSON_VALUE) public interface GreetApi { GetExchange(url /greet) String getGreeting(); }对应真实示例见 GreetApi.java。这一步把调用什么接口、传什么参数变成了纯声明。第三步用 spring-addons 自动配置 REST 客户端生成接口后只需在配置文件中声明客户端com: c4-soft: springaddons: rest: client: greet-client: base-url: ${greet-base-uri}spring-addons 会自动创建一个名为greetClient的RestClientBean然后在一个配置类里把它与接口绑定Bean GreetApi greetApi(RestClient greetClient) throws Exception { return new RestClientHttpExchangeProxyFactoryBean(GreetApi.class, greetClient).getObject(); }核心工厂类源码位于 HttpExchangeProxyFactoryBean.javaServlet 与 Reactive 场景分别由 RestClientHttpExchangeProxyFactoryBean.java 和 WebClientHttpExchangeProxyFactoryBean.java 支持。此后在业务代码里直接注入GreetApi调用即可。如何用一条配置搞定 OAuth2 认证与网络细节OAuth2 Bearer 自动附加最省心的认证方式如果被调用的 API 受 OAuth2 保护spring-addons 支持两种 Bearer 注入方式forward-bearer直接把当前安全上下文中的访问令牌转发给下游 API适合资源服务器间的调用oauth2-registration-id使用 OAuth2 客户端注册信息通过 client-credentials 等流程获取新令牌com: c4-soft: springaddons: rest: client: greet-client: base-url: ${greet-base-uri} authorization: oauth2: forward-bearer: true代理、超时与 SSL 配置告别手写 HTTP 客户端除了认证网络层的繁琐细节也全部收敛到配置中connect-timeout-millis与read-timeout-millis控制超时proxy支持从HTTP_PROXY/NO_PROXY环境变量自动读取也可显式覆盖ssl-certificates-validation-enabled: false可关闭证书校验client-http-request-factory-impl可在 JDK、HttpComponents、Jetty 之间切换实现。完整示例从 Thymeleaf 页面调用受保护的 REST APIsamples/tutorials/resource-server_with_ui是一个把 OAuth2 客户端与资源服务器配置混合在单个应用中的完整示例浏览器通过会话登录Thymeleaf 控制器内部用配置好的RestClient携带令牌调用自家 REST API。其客户端配置见 RestClientsConfig.java页面效果如下让生成的 OpenAPI 规范更准确spring-addons-starter-openapiOpenAPI 规范的质量直接决定生成的HttpExchange接口是否可靠。当枚举类型通过toString()、JsonValue或自定义Converter序列化时springdoc 默认生成的规范常常与实际行为不符。spring-addons-starter-openapi会扫描类路径、挑选正确的 Spring 序列化 Bean并注册自定义ModelConverter让规范中的枚举取值与真实序列化结果保持一致详见 spring-addons-starter-openapi/README.MD。总结把精力留给业务回顾整个方案OpenAPI 规范自动生成HttpExchange接口spring-addons-starter-rest 用配置完成认证与网络细节工厂类把接口与客户端装配成 Bean——调用 REST API 的样板代码几乎被清零。与其反复封装RestTemplate不如用这套声明式方案让每个 REST API 都像本地方法一样被调用。更多官方文档spring-addons-starter-rest/README.md、spring-addons-starter-openapi/README.MD。【免费下载链接】spring-addonsAdditional Spring Boot auto-configuration for OAuth2 / OpenID REST项目地址: https://gitcode.com/gh_mirrors/sp/spring-addons创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考