当我们需要对两个系统的进行数据交互的时候,我们可能需要在一个系统中调用另一个系统的接口来进行数据的交互。
下面是在一个系统中调用另一个系统接口的简单例子。
被调用系统(系统A)的接口以及配置:
后端的端口号:9091
被调用的接口:
@Controller
public class index {
@RequestMapping("/index")
@ResponseBody
public String index(){
String a = "项目B启动成功!";
return a;
}
}
我们在另一个系统中调用系统A的这个接口
1、配置RestTemplate实例,用于发送HTTP请求,访问另一个系统的API
package com.example.springboottest01.test.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
//配置类:用于配置RestTemplate实例,用于发送HTTP请求,访问另一个系统的API
@Configuration
public class AppConfig {
/**
* 创建并返回一个RestTemplate实例。
*
* 该方法使用@Bean注解,表明它返回的对象将被Spring容器管理为一个bean。RestTemplate是一个用于发送HTTP请求并处理响应的工具类,
* 在这里创建它是为了在应用程序中方便地进行HTTP客户端操作。
*
* @return 返回一个新的RestTemplate实例,用于执行HTTP请求。
*/
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
2、Controller层
这里使用@CrossOrigin注解来解决跨域的问题
@CrossOrigin
@RestController
public class TriggerTestController {
@Autowired
private ProjectBService projectBService;
@GetMapping("/test02")
public String button02() throws Exception {
String messageFromProjectB = projectBService.getIndexMessage();
return "从项目B获取的信息: " + messageFromProjectB;
}
3、Service层
在Spring框架中,RestTemplate
是一个用于同步client-side HTTP请求的工具类。它简化了与HTTP服务的通信,并提供了多种方法来处理HTTP请求和响应。
getIndexMessage
方法中的 RestTemplate
使用:
String url = “http://localhost:9091/index”;:
- 定义了要访问的服务端点URL。
return restTemplate.getForObject(url, String.class);:
getForObject
是RestTemplate
的一个方法,用于发送一个HTTP GET请求到指定的URL,并返回响应体的内容。- 第一个参数是URL,即我们要请求的服务地址。
- 第二个参数是响应需要被转换的目标类型。在这个例子中,我们期望返回一个字符串,因此传递了
String.class
。- 这个方法内部会处理HTTP请求的发送和响应的接收,并将响应体转换为指定的类型(在这个例子中是字符串)。
@Service
public class ProjectBService {
@Autowired
private RestTemplate restTemplate;
public String getIndexMessage() {
String url = "http://localhost:9091/index"; // 项目B的地址和端口
return restTemplate.getForObject(url, String.class);
}
}
标签:HTTP,String,系统,RestTemplate,接口,class,访问,return,public
From: https://blog.csdn.net/m0_65520060/article/details/140730264