Spring Boot 3.1.4 下API调用替代方案咨询
Spring Boot 3.1.4 调用外部API的可选方案
1. Apache HttpClient
老牌同步HTTP客户端,稳定性强、文档资源充足,适合不需要异步能力的场景。可以直接引入依赖后编写同步调用逻辑。
- Maven依赖:
<dependency> <groupId>org.apache.httpcomponents.client5</groupId> <artifactId>httpclient5</artifactId> <version>5.2.3</version> </dependency>
- 基础调用示例:
CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet request = new HttpGet("https://api.example.com/data"); try (CloseableHttpResponse response = httpClient.execute(request)) { String responseBody = EntityUtils.toString(response.getEntity()); // 处理响应内容 } catch (IOException e) { e.printStackTrace(); }
2. OkHttp
Square出品的高效HTTP客户端,同时支持同步、异步调用,API简洁易上手,性能表现优异。
- Maven依赖:
<dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>4.11.0</version> </dependency>
- 同步调用示例:
OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://api.example.com/data") .build(); try (Response response = client.newCall(request).execute()) { String responseBody = response.body().string(); // 处理响应内容 } catch (IOException e) { e.printStackTrace(); }
3. 原生Java HttpClient(Java 11+)
JDK自带的HTTP客户端,无需引入第三方依赖,支持同步、异步调用。Spring Boot 3.1.4基于Java 17,完全兼容该特性,适合不想额外增加依赖包的场景。
- 同步调用示例:
HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://api.example.com/data")) .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); String responseBody = response.body(); // 处理响应内容
4. Retrofit
基于OkHttp封装的声明式REST客户端,通过注解定义API接口,自动生成调用实现,生态成熟、示例资源丰富,类似Feign但学习成本更低。
- Maven依赖:
<dependency> <groupId>com.squareup.retrofit2</groupId> <artifactId>retrofit</artifactId> <version>2.9.0</version> </dependency> <dependency> <groupId>com.squareup.retrofit2</groupId> <artifactId>converter-gson</artifactId> <version>2.9.0</version> </dependency>
- 调用示例:
// 定义API接口 public interface ApiService { @GET("data") Call<DataResponse> getData(); } // 创建实例并发起请求 Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.example.com/") .addConverterFactory(GsonConverterFactory.create()) .build(); ApiService service = retrofit.create(ApiService.class); Call<DataResponse> call = service.getData(); Response<DataResponse> response = call.execute(); DataResponse data = response.body();
方案选择参考
- 无额外依赖需求:选原生Java HttpClient
- 追求高性能与简洁API:选OkHttp
- 偏好声明式调用风格:选Retrofit
- 传统同步业务场景:选Apache HttpClient
内容的提问来源于stack exchange,提问作者nezuko-chan
相关产品推荐
相关产品推荐

