0206_【掌握】微服务消费者
1、
project(":consumer-springboot-80") { // 消费端模块
dependencies {
implementation(project(":common-api")) // 导入公共的子模块
}
}
2、
server: # 服务端配置
port: 80 # 这个接口可以随意,反正最终都是由前端提供服务
3、
package com.yootk.consumer.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class RestTemplateConfig { // 实现RestTemplate的相关配置
@Bean // 向Spring容器之中进行Bean注册
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
}
4、
http://provider-dept-8001:8001/provider/dept/get/1
http://provider-dept-8001:8001/provider/dept/list
http://provider-dept-8001:8001/provider/dept/split?cp=1&ls=2&col=dname&kw=
http://provider-dept-8001:8001/provider/dept/add
5、
package com.yootk.consumer.action;
@RestController
@RequestMapping("/consumer/dept/*") // 两个不同的服务路径
public class DeptConsumerAction { // 消费端Action
// 定义出要访问的部门微服务所需要的核心路径前缀,随后在具体请求的时候添加传递的参数
public static final String DEPT_ADD_URL ="http://provider-dept-8001:8001/provider/dept/add";
public static final String DEPT_GET_URL ="http://provider-dept-8001:8001/provider/dept/get/"; // id是自己变更的
public static final String DEPT_LIST_URL ="http://provider-dept-8001:8001/provider/dept/list";
public static final String DEPT_SPLIT_URL ="http://provider-dept-8001:8001/provider/dept/split";
@Autowired
private RestTemplate restTemplate; // 本章你是主角儿
@GetMapping("add") // 消费端接口名称
public Object addDept(DeptDTO dto) {
// 需要将当前的DTO对象传递到部门微服务之中,所以此时就要通过RestTemplate对象处理
return this.restTemplate.postForObject(DEPT_ADD_URL, dto, Boolean.class);
}
@GetMapping("get")
public Object get(Long deptno) {
return this.restTemplate.getForObject(DEPT_GET_URL + deptno, DeptDTO.class);
}
@GetMapping("list")
public Object list() {
return this.restTemplate.getForObject(DEPT_LIST_URL, List.class);
}
@GetMapping("split")
public Object split(int cp, int ls, String col, String kw) {
return this.restTemplate.getForObject(DEPT_SPLIT_URL + "?cp=" + cp + "&ls=" + ls + "&col=" + col + "&kw=" + kw, Map.class);
}
}
6、
package com.yootk.consumer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class StartConsumerApplication { //
public static void main(String[] args) {
SpringApplication.run(StartConsumerApplication.class, args);
}
}
7、
http://consumer-springboot-80/consumer/dept/get?deptno=1
http://consumer-springboot-80/consumer/dept/list
http://consumer-springboot-80/consumer/dept/split?cp=1&ls=2&col=dname&kw
http://consumer-springboot-80/consumer/dept/add?dname=公益直播部&loc=洛阳
@RestController
@RequestMapping("/provider/dept/*") // 微服务提供者父路径
public class DeptAction {
@Autowired
private IDeptService deptService;
@GetMapping("get/{id}")
public Object get(@PathVariable("id") long id) {
return this.deptService.get(id);
}
@PostMapping("add")
public Object add(@RequestBody DeptDTO deptDTO) { // 后面会修改参数模式为JSON
return this.deptService.add(deptDTO);
}
@GetMapping("list")
public Object list() {
return this.deptService.list();
}
@GetMapping("split")
public Object split(int cp, int ls, String col, String kw) {
return this.deptService.split(cp, ls, col, kw);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)