目录
一 RestTemplate 依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
二 RestTemplate 装配
@Configuration
public class RestTemplateConfig {
@Bean
public RestTemplate restTemplate(ClientHttpRequestFactory factory){
return new RestTemplate(factory);
}
@Bean
public ClientHttpRequestFactory simpleClientHttpRequestFactory(){
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
//客户端与服务端建立连接超时时间
factory.setConnectTimeout(1000);
//客户端从服务端读取数据的超时时间
factory.setReadTimeout(2000);
return factory;
}
}
三 RestTemplate 使用
@Component
public class RestTemplateUtils {
@Autowired
private RestTemplate restTemplate;
/**
* 通过GET请求获取ResponseEntity对象,包容有状态码,响应头和响应数据
* @param id
* @return
*/
public ResponseEntity<User> getForEntity(Long id) {
ResponseEntity<User> responseEntity = restTemplate.getForEntity("localhost:8080/api/user/getById?id=" + id, User.class);
return responseEntity;
}
/**
* 通过GET请求获得响应结果
* @param id
* @return
*/
public User getForObject(Long id) {
User user = restTemplate.getForObject("localhost:8080/api/user/getById?id=" + id, User.class);
return user;
}
/**
* 通过POST请求获取ResponseEntity对象,包容有状态码,响应头和响应数据
* @param user
* @return
*/
public ResponseEntity<String> postForEntity(User user) {
ResponseEntity<String> responseEntity = restTemplate.postForEntity("localhost:8080/api/user/insert", user, String.class);
return responseEntity;
}
/**
* 通过exchange实现GET请求获取ResponseEntity对象,包容有状态码,响应头和响应数据
* @param id
* @return
*/
public ResponseEntity<String> exchangeToGet(Long id) {
ResponseEntity<String> responseEntity = restTemplate.exchange("localhost:8080/api/user/getById?id=" + id, HttpMethod.GET, null, String.class);
return responseEntity;
}
/**
* 通过exchange实现POST请求获取ResponseEntity对象,包容有状态码,响应头和响应数据
* @param user
* @return
*/
public ResponseEntity<String> exchangeToPost(User user) {
//heads信息
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
//heads信息和body信息组装
HttpEntity<User> httpEntity = new HttpEntity<>(user, headers);
ResponseEntity<String> response = restTemplate.exchange("localhost:8080/api/user/insert", HttpMethod.POST, httpEntity, String.class);
return response;
}