简述RestTemplate
是Spring用于同步client端的核心类,简化了与http服务的通信,并满足RestFul原则,程序代码可以给它提供URL,并提取结果。默认情况下,RestTemplate默认依赖jdk的HTTP连接工具。当然你也可以 通过setRequestFactory属性切换到不同的HTTP源,比如Apache HttpComponents、Netty和OkHttp。
借助 RestTemplate,Spring应用能够方便地使用REST资源。Spring的 RestTemplate访问使用了模版方法的设计模式。模版方法将过程中与特定实现相关的部分委托给接口,而这个接口的不同实现定义了接口的不同行为。
RestTemplate定义了36个与REST资源交互的方法,其中的大多数都对应于HTTP的方法。
其实,这里面只有11个独立的方法,其中有十个有三种重载形式,而第十一个则重载了六次,这样一共形成了36个方法。
delete()
在特定的URL上对资源执行HTTP DELETE操作
exchange()
在URL上执行特定的HTTP方法,返回包含对象的ResponseEntity,这个对象是从响应体中
映射得到的
execute()
在URL上执行特定的HTTP方法,返回一个从响应体映射得到的对象
getForEntity()
发送一个HTTP GET请求,返回的ResponseEntity包含了响应体所映射成的对象
getForObject()
发送一个HTTP GET请求,返回的请求体将映射为一个对象
postForEntity()
POST 数据到一个URL,返回包含一个对象的ResponseEntity,这个对象是从响应体中映射得
到的
postForObject()
POST 数据到一个URL,返回根据响应体匹配形成的对象
headForHeaders()
发送HTTP HEAD请求,返回包含特定资源URL的HTTP头
optionsForAllow()
发送HTTP OPTIONS请求,返回对特定URL的Allow头信息
postForLocation()
POST 数据到一个URL,返回新创建资源的URL
put()
PUT 资源到特定的URL
RestTemplate使用
这里以请求高德地图的geo接口为例进行说明
引入依赖
RestTemplate位于spring-boot-starter-web中,所以我们只需要引入spring-boot-starter-web依赖即可。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
配置RestTemplate
我这里直接放到configuration配置类了,可以通过配置文件注入,有不了解的,可以戳 这里
/**
* @author laughing
* @date 2020/10/2
* @site https://lisen.cc
*/
@Configuration
public class RestTemplateConfig {
@Bean
public RestTemplate restTemplate(ClientHttpRequestFactory clientHttpRequestFactory) {
return new RestTemplate(clientHttpRequestFactory);
}
@Bean
public ClientHttpRequestFactory clientHttpRequestFactory() {
SimpleClientHttpRequestFactory simpleClientHttpRequestFactory = new SimpleClientHttpRequestFactory();
simpleClientHttpRequestFactory.setReadTimeout(3600);
simpleClientHttpRequestFactory.setConnectTimeout(3600);
return simpleClientHttpRequestFactory;
}
}
调用高德geo接口
/**
* @author laughing
* @date 2020/10/2
* @site https://lisen.cc
*/
@RestController
public class AmapController {
private final String url = "https://restapi.amap.com/v3/geocode/geo";
private final String key = "c17ba5b2f9277ed0326ab4fa6019b0cf";
@Resource
RestTemplate restTemplate;
/**
* 地理位置编码
*
* @return
* @throws JsonProcessingException
*/
@RequestMapping("geo")
public String geo() throws JsonProcessingException {
String url = this.url + "?key=" + this.key + "&address=" + "山东省济南市历下区龙奥大厦" + "&output=JSON";
ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.GET, null, String.class);
return responseEntity.getBody();
}
}
正在找这个呢
感谢分享
大佬,这个资源找很久了,能不能发一下谢谢, 1606244844@qq.com
代码都在Gitee上