【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
修改MyApp1Controller.java,新增getApp2接口
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);
}
}
- 接着打开浏览器,访问http://localhost:8080/myapp1/cloud/getApp2,查看会发现成功访问myapp2,成功!
RestTemplate 发送json
GET请求:getForObject
POST请求:postForObject
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看起来调用更简单一些。