spring cloud 微服务部署(2025年)第四章:Nacos、LoadBalancer、GateWay、Ribbon集成之跨服务调用ribbon

【spring cloud 3.0微服务部署】第四章:Nacos、LoadBalancer、GateWay、Ribbon集成之跨服务调用ribbon

  • 链接
    • 第一章:Nacos、LoadBalancer、GateWay、Ribbon集成之Nacos部署
    • 第二章:Nacos、LoadBalancer、GateWay、Ribbon集成之负载均衡LoadBalancer部署
    • 第三章:Nacos、LoadBalancer、GateWay、Ribbon集成之网关Gateway部署
    • 第四章:Nacos、LoadBalancer、GateWay、Ribbon集成之跨服务调用ribbon
    • 查看源码
  • 正文
    • 接前章
    • 微服务myapp1调用myapp2
    • RestTemplate 发送json

链接

第一章:Nacos、LoadBalancer、GateWay、Ribbon集成之Nacos部署

第二章:Nacos、LoadBalancer、GateWay、Ribbon集成之负载均衡LoadBalancer部署

第三章:Nacos、LoadBalancer、GateWay、Ribbon集成之网关Gateway部署

第四章:Nacos、LoadBalancer、GateWay、Ribbon集成之跨服务调用ribbon

查看源码

正文

接前章

微服务myapp1调用myapp2

修改MyApp1Controller.java,新增getApp2接口

bash 复制代码
package com.que5;
import jakarta.annotation.Resource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;

/**
 * <p>
 * 用户列表 前端控制器
 * </p>
 *
 * @author evan
 * @since 2024-11-28
 */
@RestController
@RequestMapping("/cloud")
public class MyApp1Controller {

    @Value("${server.port}")
    private Integer port;
    @Value("${spring.application.name}")
    private String name;
    @GetMapping("/hello")
    public String hello(@RequestParam(name = "msg",required = false) String msg) {
        return "hello name:"+name+",port:"+port + " msg:" + msg;
    }

    @Resource
    RestTemplate restTemplate;
    @GetMapping("/getApp2")
    public String getApp2() {

        return "getApp2:"+restTemplate.getForObject("http://myapp2/cloud/hello?msg=我来自myapp1",String.class);
    }
}

RestTemplate 发送json

GET请求:getForObject

POST请求:postForObject

bash 复制代码
HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        HttpEntity<String> entity = new HttpEntity<>(json, headers);
        
        String result = restTemplate.postForObject(url, entity, String.class); // 或者使用exchange方法获取更详细的响应信息
        System.out.println(result);

结语: ribbon是nacos默认集成,所以不需要额外引入,没有用open feign是因为想精简一些,虽然open feign看起来调用更简单一些。

相关推荐
猫猫不是喵喵.13 小时前
从0到1创建一个微服务项目
java·数据库·微服务·1024程序员节
htzyl20615 小时前
别急着上微前端:从 6 个场景倒推 Module Federation 2.0 与 qiankun 2.x 的选型
前端·微服务
知守观17 小时前
一个方法两个触发口:反编译 XXL-Job 后,我看清了 inner/job 子包的裸奔现状
java·spring boot·微服务
wz975420 小时前
Docker 从 systemd 托管容器、overlay2 存储驱动到 Compose 多容器实战
spring cloud·docker·eureka
草莓熊Lotso2 天前
【C++ 基于微服务的即时通讯系统】文件存储子服务实战:UUID生成、文件IO封装与全接口单元测试
开发语言·网络·数据库·c++·微服务·架构·单元测试
顧棟3 天前
INFINI Gateway 服务器端口重用(SO_REUSEPORT)实现与分析
网络·gateway
逃逸线LOF5 天前
服务网关Gateway
java·运维·gateway
小郎君6586 天前
注解式脱敏:用 Jackson 的 ContextualSerializer 做字段级策略(一)
spring boot·spring cloud
jktantan6 天前
注解式脱敏:用 Jackson 的 ContextualSerializer 做字段级策略(一)
spring boot·后端·算法·spring cloud·系统架构
wdyan2977 天前
带着小白学习-微服务-5 实战:配置中心-数据库连接
数据库·学习·微服务