当前位置: 首页 > article >正文

springboot3访问第三方接口

添加依赖(如果尚未添加)

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;

       @Configuration
       public class AppConfig {
         @Bean
         public 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;

  @Autowired
  public 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;

         @Autowired
         public 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密钥参数,然后调用WeatherServicegetWeatherData方法获取天气数据并返回。

操作完以上代码使用postman测试:

 请求接口地址:http://localhost:8888/weather/data?city=城市&key=xxxxxxxxxxxxx

官方地址:天气查询-基础 API 文档-开发指南-Web服务 API | 高德地图API


http://www.kler.cn/a/445846.html

相关文章:

  • JAVA开发时获取用户信息失败,分析后端日志信息
  • 信号处理相关的东东(学习解惑)
  • Pygubu-Designer 使用指南
  • STM32MP1linux根文件系统目录作用
  • 可访问性(Accessibility)的重要性及实现:构建包容性的数字世界
  • 【Java Web】Axios实现前后端数据异步交互
  • GNU Octave:特性、使用案例、工具箱、环境与界面
  • PHP接入美团联盟推广
  • textfile类型小文件合并
  • Unity动态读取外部图片转Texture2D,内存过大问题解决方案
  • [ThinkPHP]5.0.23-Rce 1
  • Oracle/MySQL 到 OceanBase 数据库迁移的关键问题与解决方案
  • python学opencv|读取图像(十五)BGR图像和HSV图像通道合并
  • M3D: 基于多模态大模型的新型3D医学影像分析框架,将3D医学图像分析从“看图片“提升到“理解空间“的层次,支持检索、报告生成、问答、定位和分割等8类任务
  • 【蓝桥杯每日一题】扫雷——暴力搜索
  • 方正畅享全媒体采编系统reportCenter.do接口SQL注入漏洞复现 [附POC]
  • css底部对齐布局
  • PC寄存器(Program Counter Register) jvm
  • 探索 Python编程 调试案例:计算小程序中修复偶数的bug
  • 构建一个rust生产应用读书笔记7-确认邮件1
  • 使用screw来对比数据库表和字段差异
  • R语言的数据结构-数据框
  • docker打包镜像并迁移:如何从A服务器打包docker镜像到B服务器上容器中运行
  • 如何利用Python爬虫获得Lazada商品评论列表
  • UE5 跟踪能力的简单小怪
  • 请求go web后端接口 java安卓端播放视频