1 restTemplate — spring 提供
特点:
1、RestOperations 提供了各种封装方法,非常方便直接将返回转成实体类。
2、默认使用JDK 的HttpURLConnection进行通信,但是可以通过RestTemplate.setRequestFactory 切换到不同的HTTP源:如Apache HttpComponents、Netty、OkHttp。
3、支持同步、异步请求;
4、支持更多的定制,比如拦截器等。
ps:支持 get 请求,参数是 body 的形式。
1.1 底层是java的HttpURLConnection(默认使用,可以定制)
所有的请求都需要执行 doExecute() 方法
@Nullable
protected <T> T doExecute(URI url, @Nullable HttpMethod method, @Nullable RequestCallback requestCallback, @Nullable ResponseExtractor<T> responseExtractor) throws RestClientException {
Assert.notNull(url, "URI is required");
Assert.notNull(method, "HttpMethod is required");
ClientHttpResponse response = null;
Object var14;
try {
// 创建请求
ClientHttpRequest request = this.createRequest(url, method);
if (requestCallback != null) {
requestCallback.doWithRequest(request);
}
response = request.execute();
this.handleResponse(url, method, response);
var14 = responseExtractor != null ? responseExtractor.extractData(response) : null;
} catch (IOException var12) {
String resource = url.toString();
String query = url.getRawQuery();
resource = query != null ? resource.substring(0, resource.indexOf(63)) : resource;
throw new ResourceAccessException("I/O error on " + method.name() + "
Java调用外部REST API:restTemplate与HttpUtil对比

本文介绍了Java中两种调用外部REST请求的方式:restTemplate(Spring提供)和HttpUtil(Hutool库)。restTemplate支持通过HttpURLConnection或自定义HTTP源进行请求,提供同步和异步请求,且支持将返回值直接转换为实体类。而HttpUtil是HttpRequest的封装,提供get和post等请求方法。注意,虽然restTemplate支持get请求带body参数,但这是HTTP规范中的非传统做法,可能不被所有服务接受。
最低0.47元/天 解锁文章
5063

被折叠的 条评论
为什么被折叠?



