添加依赖(如果尚未添加)
在pom.xml
文件中,确保已经包含spring-boot-starter-web
依赖,因为RestTemplate
通常在这个依赖范围内。如果没有,添加如下依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
- **配置`RestTemplate`(有多种方式,这里展示一种简单的Bean配置方式)**:
- 在一个配置类(例如`AppConfig.java`)中,通过`@Configuration`注解将其标记为配置类,然后定义`RestTemplate`的Bean。示例如下:
```java
import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.client.RestTemplate;@Configurationpublic class AppConfig {@Beanpublic RestTemplate restTemplate() {return new RestTemplate();}}
在服务类中使用RestTemplate
访问第三方接口:
假设要访问一个天气查询接口(以高德地图天气接口https://restapi.amap.com/v3/weather/weatherInfo
为例),创建一个服务类(例如WeatherService.java
)。示例如下:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.{insert\_element\_0\_c3RlcmVvdHlwZS4=}Service;
import org.springframework.web.client.RestTemplate;@Service
public class WeatherService {private final RestTemplate restTemplate;@Autowiredpublic WeatherService(RestTemplate restTemplate) {this.restTemplate = restTemplate;}public String getWeatherData(String city, String apiKey) {String url = "https://restapi.amap.com/v3/weather/weatherInfo?city=" + city + "&key=" + apiKey;ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);return response.getBody();}
}
- 在上述代码中:
- 首先通过构造函数注入`RestTemplate`。
- 然后在`getWeatherData`方法中,构建了请求的URL,包含城市名称(`city`)和API密钥(`apiKey`)等参数。使用`restTemplate.getForEntity`方法发送GET请求,获取`ResponseEntity`对象,最后返回响应体的内容(即天气数据)。
- **在控制器中调用服务方法(以暴露接口供外部访问)**:
- 创建一个控制器类(例如`WeatherController.java`)。示例如下:
```java
import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;@RestController@RequestMapping("/weather")public class WeatherController {private final WeatherService weatherService;@Autowiredpublic WeatherController(WeatherService weatherService) {this.weatherService = weatherService;}@GetMapping("/data")public String getWeatherData(@RequestParam("city") String city, @RequestParam("key") String key) {return weatherService.getWeatherData(city, key);}}
- 在这个控制器中,同样通过构造函数注入
WeatherService
。定义了一个/weather/data
的 GET 请求接口,通过@RequestParam
注解获取城市名称和 API密钥参数,然后调用WeatherService
的getWeatherData
方法获取天气数据并返回。
操作完以上代码使用postman测试:
请求接口地址:http://localhost:8888/weather/data?city=城市&key=xxxxxxxxxxxxx
官方地址:天气查询-基础 API 文档-开发指南-Web服务 API | 高德地图API