1.简介
RestTemplate
是Spring框架中提供的一个用于发送HTTP请求的模板类。它提供了一组方便的方法来创建、发送和处理HTTP请求,并以简单的方式与Web服务进行交互。
使用RestTemplate
,你可以执行各种HTTP操作,如GET、POST、PUT和DELETE请求。它还支持处理响应,包括解析JSON、XML和其他常见的数据格式。
下面是一个使用RestTemplate
发送GET请求的示例:
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;
public class Example {
public static void main(String[] args) {
RestTemplate restTemplate = new RestTemplate();
String url = "http://api.example.com/data";
ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);
if (response.getStatusCode().is2xxSuccessful()) {
String responseBody = response.getBody();
System.out.println(responseBody);
} else {
System.out.println("Request failed with status code: " + response.getStatusCodeValue());
}
}
}
在上面的示例中,我们创建了一个RestTemplate
实例,并使用getForEntity
方法发送了一个GET请求。该方法将请求的URL和响应的类型作为参数,并返回一个ResponseEntity
对象,其中包含响应的状态码、头信息和主体内容。
你可以根据需要使用RestTemplate
的其他方法来发送不同类型的请求,例如postForEntity
、put
和delete
等。
请注意,自从Spring 5.0版本起,推荐使用WebClient
替代RestTemplate
,因为WebClient
提供了更灵活和响应式的方式来处理HTTP请求。但是,RestTemplate
仍然是一个可用且广泛使用的工具类\
2. 常用方法
参数:
- url:请求的目标地址。
- method:请求的HTTP方法(GET、POST、PUT、DELETE等)。
- requestEntity:请求体的实体对象,可包括请求头和请求参数等信息。
- responseType:响应体的类型,可以是简单类型,也可以是复合类型,如List、Map等。
- uriVariables:可选参数,表示URL中的占位符,例如
/user/{userId}
中的userId。
2.1 GET请求方法
getForObject(String url, Class<T> responseType, Object... uriVariables)
:发送GET请求,并将响应体转换为指定的Java对象。getForEntity(String url, Class<T> responseType, Object... uriVariables)
:发送GET请求,并将响应体封装到ResponseEntity对象中。
2.2 POST请求方法
postForEntity(String url, Object request, Class<T> responseType, Object... uriVariables)
:发送POST请求,并将请求体和响应体封装到ResponseEntity对象中。postForObject(String url, Object request, Class<T> responseType, Object... uriVariables)
:发送POST请求,并将响应体转换为指定的Java对象。
2.3 PUT请求方法
put(String url, Object request, Object... uriVariables)
:发送PUT请求。
2.4 DELETE请求方法
delete(String url, Object... uriVariables)
:发送DELETE请求。delete(String url, Class<T> responseType, Object... uriVariables)
:发送DELETE请求,并将响应体转换为指定的Java对象。deleteForObject(String url, Object... uriVariables)
:发送DELETE请求,并将响应体转换为指定的Java对象。
2.5 Exchange方法(通用请求方法)
exchange(String url, HttpMethod method, HttpEntity<?> requestEntity, Class<T> responseType, Object... uriVariables)
:发送任意HTTP请求,并将响应体转换为指定的Java对象。exchange(String url, HttpMethod method, HttpEntity<?> requestEntity, ParameterizedTypeReference<T> responseType, Object... uriVariables)
:发送任意HTTP请求,并将响应体封装到ResponseEntity对象中。
2.6 Head请求方法
headForHeaders(String url, Object... uriVariables)
:发送HEAD请求,并获取响应头信息。
2.7 Options请求方法
optionsForAllow(String url, Object... uriVariables)
:发送OPTIONS请求,并获取允许的HTTP请求方法。
2.8 Patch请求方法
patchForObject(String url, Object request, Class<T> responseType, Object... uriVariables)
:发送PATCH请求,并将响应体转换为指定的Java对象。
2.9 辅助方法
execute(String url, HttpMethod method, RequestCallback requestCallback, ResponseExtractor<T> responseExtractor, Object... uriVariables)
:发送任意HTTP请求,并使用RequestCallback和ResponseExtractor执行各种操作。setErrorHandler(ResponseErrorHandler errorHandler)
:设置错误处理器,用于检测HTTP请求中的错误。setMessageConverters(List<HttpMessageConverter<?>> messageConverters)
:设置HTTP请求和响应的转换器,使其能够处理各种数据格式。