在创建带注解的 API 对象之前,先在 RESTEasy 客户端上设置网络路由。类型化 API 代理是 Java 对象,不是正向网络中介。

import jakarta.ws.rs.client.ClientBuilder;
import org.jboss.resteasy.client.jaxrs.ResteasyClient;
import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder;

ResteasyClientBuilder builder =
    (ResteasyClientBuilder) ClientBuilder.newBuilder();

ResteasyClient client = builder
    .defaultProxy("proxy.example.net", 8080, "http")
    .build();

MyApi api = client
    .target("https://api.example.net")
    .proxy(MyApi.class);

这是 RESTEasy 6.2 的 Jakarta API,RESTEasy 是已安装的客户端提供者,MyApi 已由应用定义。代理参数分别是主机名、整数端口和代理传输方案。对于获准的公共 API 请求,请使用你服务中匹配的 HTTP 端点,或参考 HTTP 代理列表。将 API 的目标保留在 target 上;HTTPS API 可以使用 HTTP 代理。

在其类型化代理调用期间保持客户端存活,工作完成后再关闭它。从已经关闭的客户端作用域返回 API 对象,会使它失去传输层。

确定谁拥有该传输。构建器文档描述了默认的 Apache HTTP Client 集成。如果提供了 ClientHttpEngine,边界就会改变:httpEngine 会取代构建器的 SSL 和连接相关配置。请通过该引擎支持的接口设置代理和 TLS。

基于 ClientExecutor 的旧示例则配置一个包装过的 Apache 客户端。请遵循那一代写法,而不是把它粘贴到 Jakarta 构建器中。

无论采用哪种分支,都要把 API 主机名保留为 TLS 标识并启用校验。代理认证、API 登录和证书信任是彼此独立的要求;仅有路由并不能提供所有认证方案。

相关文章