本地如何同时跑起两个项目,并用其中一个项目调用另一个项目的接口

大概思路就是:

1.本地两个项目都启动起来。但是两个项目需要设定不同的端口,比如A项目设定端口为8080B项目设置端口为8098
2.假设A项目需要调用B项目的接口,比如B项目的接口如下所示:

@RestController
@RequestMapping("/user")
public class ControllerDemo {
	@AutoWired
	private UserService userService;
		
	@GetMapping("/select")
	public Result select() {
		return userService.selectAll();
	}
}

3.关键点就是在A项目中如何去调用B项目的接口呢?
答:通过http请求去调用,此时需要使用到相应的http请求工具类

比如使用HttpComponents工具,该工具的maven依赖为:

<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.12</version>
</dependency>

4.关于这个工具类具体怎样使用可以查询其他人的博客学习。下方简述A项目通过HttpComponents工具调用B项目的接口(这是通用的操作)。
下方为A项目中的一个类:此处仅测试get方法,其他方法的调用与下述步骤大同小异

public class HttpClientTest {

    public static void main(String[] args) throws Exception{

        //此处仅测试get方法
        //1、创建客户端
        CloseableHttpClient httpClient = HttpClients.createDefault();

        //2、创建Http的请求方式get,post etc... 需要传入请求地址
        //此处输入B项目的ControllerDemo类中select()方法的请求url
        HttpGet httpGet = new HttpGet("http://localhost:8098/user/select");

        //3、httpClient执行请求,并获取返回结果
        CloseableHttpResponse response = httpClient.execute(httpGet);

        //4、输出获取到的结果
        //从response中取出返回的entity
        HttpEntity entity = response.getEntity();
        //输出
        System.out.println("get返回状态行:"+response.getStatusLine());
        System.out.println("get返回结果:"+EntityUtils.toString(entity));

        //5、关闭连接 也可以直接调用close()方法
        HttpClientUtils.closeQuietly(response);
    }

参考:HttpComponents-Client的基本使用

5.经过上述步骤,那么A项目就可以通过B项目提供的接口拿到数据了

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在一个Vue项目中同时调用两个服务器的接口,你可以使用Axios库来发送HTTP请求。以下是一种实现的方式: 1. 首先,在你的Vue项目中安装Axios库。可以使用npm或者yarn命令进行安装: ```bash npm install axios ``` 2. 在需要调用接口的组件中,引入Axios库,并创建两个不同的实例,分别用于调用不同的服务器接口。例如,在你的`main.js`文件中添加如下代码: ```javascript import Vue from 'vue'; import axios from 'axios'; // 创建第一个实例,用于调用第一个服务器的接口 const instance1 = axios.create({ baseURL: 'http://server1.com/api', // 其他配置项 }); // 创建第二个实例,用于调用第二个服务器的接口 const instance2 = axios.create({ baseURL: 'http://server2.com/api', // 其他配置项 }); // 将实例挂载到Vue原型上,方便组件中使用 Vue.prototype.$server1 = instance1; Vue.prototype.$server2 = instance2; ``` 3. 现在你可以在组件中使用`this.$server1`和`this.$server2`来调用不同服务器的接口了。例如,在某个组件的方法中调用接口: ```javascript methods: { fetchDataFromServer1() { this.$server1.get('/data') .then(response => { // 处理响应数据 }) .catch(error => { // 处理错误 }); }, fetchDataFromServer2() { this.$server2.get('/data') .then(response => { // 处理响应数据 }) .catch(error => { // 处理错误 }); }, } ``` 通过这种方式,你可以在一个Vue项目中同时调用两个服务器的接口。你可以根据实际需求配置不同的实例,包括设置baseURL、请求头、拦截器等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值