restTemplate 发送get请求
时间: 2025-03-26 07:56:54 浏览: 30
### 如何使用Spring RestTemplate发送GET请求
#### 使用`getForObject()`方法获取对象
当目标是从服务器接收一个简单的Java对象作为响应时,可以采用`getForObject()`方法。此方法会执行HTTP GET请求并返回指定类型的实例。
```java
RestTemplate restTemplate = new RestTemplate();
String url = "http://example.com/api/resource";
MyObject result = restTemplate.getForObject(url, MyObject.class);
```
这段代码展示了如何创建一个新的`RestTemplate`实例,并调用其`getForObject()`函数来发起GET请求到给定URL地址,最后将响应体转换成自定义的`MyObject`类的对象[^1]。
#### 带有路径变量或查询参数的GET请求
如果需要向API传递额外的信息,比如ID或其他过滤条件,则可以通过路径变量或者查询字符串的形式附加这些数据:
##### 路径变量的例子
假设有一个RESTful API端点接受资源ID作为路径的一部分:
```java
// URL模板中的{id}会被实际值替换掉
String urlWithPathVariable = "http://example.com/api/resources/{id}";
Long idValue = 1L;
Resource resourceById = restTemplate.getForObject(urlWithPathVariable, Resource.class, idValue);
```
这里利用了第三个参数的位置对应关系自动填充URL模式里的占位符。
##### 查询参数的例子
对于那些不希望嵌入到URL结构内的参数,可以选择将其作为查询参数附带过去:
```java
// 构建带有查询参数的URL
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl("http://example.com/api/search")
.queryParam("q", "searchTerm");
ResponseEntity<SearchResult> response = restTemplate.getForEntity(builder.toUriString(), SearchResult.class);
if (response.getStatusCode().is2xxSuccessful()) {
SearchResult searchResults = response.getBody();
}
```
在这个例子中,先构建了一个包含查询参数`q=searchTerm`的完整URL链接,再通过`getForEntity()`发出GET请求,同时还能获得完整的HTTP响应头信息以便进一步处理。
阅读全文
相关推荐


















