网站建设过程规划和准备阶段,设计工作室营业执照,广州网站建设 讯度网络,中山网红目录
RestTemplate 简单使用 创建 RestTemplate接口调用一些其他设置简单总结公众号推荐在项目中#xff0c;当我们需要远程调用一个 HTTP 接口时#xff0c;我们经常会用到 RestTemplate 这个类。这个类是 Spring 框架提供的一个工具类。Spring 官网对它的介绍如下#xf…目录
RestTemplate 简单使用 创建 RestTemplate接口调用一些其他设置简单总结公众号推荐在项目中当我们需要远程调用一个 HTTP 接口时我们经常会用到 RestTemplate 这个类。这个类是 Spring 框架提供的一个工具类。Spring 官网对它的介绍如下 RestTemplate: The original Spring REST client with a synchronous, template method API. 从上面的介绍中我们可以知道RestTemplate 是一个同步的 Rest API 客户端。下面我们就来介绍下 RestTemplate 的常用功能。
RestTemplate 简单使用#
RestTemplate 提供高度封装的接口可以让我们非常方便地进行 Rest API 调用。常见的方法如下
表格RestTemplate 的方法 上面的方法我们大致可以分为三组
getForObject --- optionsForAllow 分为一组这类方法是常规的 Rest APIGET、POST、DELETE 等方法调用exchange接收一个 RequestEntity 参数可以自己设置 HTTP methodURLheaders 和 body返回 ResponseEntityexecute通过 callback 接口可以对请求和返回做更加全面的自定义控制。
一般情况下我们使用第一组和第二组方法就够了。
创建 RestTemplate
Bean
public RestTemplate restTemplate(ClientHttpRequestFactory factory) {RestTemplate restTemplate new RestTemplate(factory);return restTemplate;
}Bean
public ClientHttpRequestFactory simpleClientHttpRequestFactory() {SimpleClientHttpRequestFactory factory new SimpleClientHttpRequestFactory();factory.setReadTimeout(5000);factory.setConnectTimeout(15000);// 设置代理//factory.setProxy(null);return factory;
}
创建 RestTemplate 时需要一个 ClientHttpRequestFactory通过这个请求工厂我们可以统一设置请求的超时时间设置代理以及一些其他细节。通过上面代码配置后我们直接在代码中注入 RestTemplate 就可以使用了。
有时候我们还需要通过 ClientHttpRequestFactory 配置最大链接数忽略SSL证书等大家需要的时候可以自己查看代码设置。
接口调用#
1. 普通接口调用
MapString, String vars Collections.singletonMap(hotel, 42);
// 通过 GET 方式调用返回一个 String 值还可以给 URL 变量设置值也可通过 uriTemplateHandler 这个属性自定义
String result restTemplate.getForObject(https://example.com/hotels/{hotel}/rooms/{hotel}, String.class, vars);String url http://127.0.0.1:8080/hello;
JSONObject param new JSONObject();
//restTemplate 会根据 params 的具体类型调用合适的 HttpMessageConvert 将请求参数写到请求体 body 中并在请求头中添加合适的 content-type
// 也会根据 responseType 的类型本列子中是 JSONObject设置 head 中的 accept 字段当响应返回的时候再调用合适的 HttpMessageConvert 进行响应转换
ResponseEntityJSONObject responseEntityrestTemplate.postForEntity(url,params,JSONObject.class);
int statusCodeValue responseEntity.getStatusCodeValue();
HttpHeaders headers responseEntity.getHeaders();
JSONObject body responseEntity.getBody(); 来源RestTemplate 最详解 - 程序员自由之路 - 博客园