springboot resttemplate 使用
时间: 2025-04-23 09:09:59 浏览: 19
### 如何在 Spring Boot 中使用 RestTemplate 进行 HTTP 请求
#### 创建并配置 RestTemplate 实例
为了更好地控制 `RestTemplate` 的行为,通常会通过自定义配置来创建实例。这可以通过定义一个配置类来完成:
```java
@Configuration
public class RestTemplateConfig {
@Bean
public RestTemplate restTemplate(ClientHttpRequestFactory factory){
return new RestTemplate(factory);
}
@Bean
public ClientHttpRequestFactory simpleClientHttpRequestFactory(){
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setConnectTimeout(15000); // 设置连接超时时间
factory.setReadTimeout(5000); // 设置读取超时时间
return factory;
}
}
```
上述代码展示了如何配置带有特定超时设置的 `RestTemplate` 实例[^2]。
#### 发送简单的 GET 请求
对于不需要额外头部信息的情况,可以直接利用 `getForObject()` 或者 `getForEntity()` 方法发起请求:
```java
@Autowired
private RestTemplate restTemplate;
// 不带请求头的GET请求示例
String url = "http://example.com/api/resource";
ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);
if(response.getStatusCode().is2xxSuccessful()){
System.out.println("响应体:" + response.getBody());
} else {
System.err.println("请求失败");
}
```
这段代码说明了当只需要获取资源而不必附加任何特殊头部的情况下应采取的方式[^1]。
#### 带有请求头的 GET 请求
如果需要向服务器传递某些元数据(比如身份验证令牌),则可以构建包含这些细节的消息头,并将其应用于请求中:
```java
@Test
public void testWithHeaders() {
HttpHeaders headers = new HttpHeaders();
headers.add("Authorization", "Bearer YOUR_ACCESS_TOKEN");
HttpEntity<Void> entity = new HttpEntity<>(headers);
ResponseEntity<String> result = restTemplate.exchange(
"http://localhost:8802/testRestGet",
HttpMethod.GET,
entity,
String.class
);
System.out.println(result.getBody());
}
```
此部分解释了怎样为 RESTful API 调用添加必要的请求头信息[^5]。
#### 处理 POST 和其他类型的请求
除了 GET 请求外,还可以轻松处理像 POST、PUT 等操作。这里给出一个发送 JSON 数据的例子:
```java
Map<String, Object> map = new HashMap<>();
map.put("key1", value1);
map.put("key2", value2);
HttpHeaders jsonHeader = new HttpHeaders();
jsonHeader.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<Map<String, Object>> requestJson = new HttpEntity<>(map, jsonHeader);
restTemplate.postForObject("http://target-service/post-endpoint", requestJson, Void.class);
```
该片段介绍了如何构造携带 JSON 格式的 body 并指定适当的内容类型来进行 POST 请求[^3]。
阅读全文
相关推荐










