在一个系统中访问另一个系统的接口

当我们需要对两个系统的进行数据交互的时候,我们可能需要在一个系统中调用另一个系统的接口来进行数据的交互。

下面是在一个系统中调用另一个系统接口的简单例子。

被调用系统(系统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);
    }
}

  • 13
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值