Rest微服务构建

服务提供方

通过controller层向外暴露服务

// 提供Restful服务
@RestController
public class DeptController {

    @Autowired
    private DeptService deptService;//具体业务逻辑

    @PostMapping("/dept/add")
    public boolean addDept(@RequestBody Dept dept) {
        return deptService.addDept(dept);
    }

    @GetMapping("/dept/get/{id}")
    public Dept get(@PathVariable("id") Long id) {
        return deptService.queryById(id);
    }

    @GetMapping("/dept/list")
    public List<Dept> queryAll() {
        return deptService.queryAll();
    }

}

服务消费方

通过RestTemplate调用提供者的服务

@RestController
public class DeptConsumerController {

    // 理解:消费者,不应该有service层
    // RestTemplate ... 供我们直接调用就可以了!注册到Spring中
    // (url,实体:map,Class<T> responseType)
    @Autowired
    private RestTemplate restTemplate;//提供多种便捷访问远程http服务的方法,简单restful服务模板

    private static final String REST_URL_PREFIX = "http://127.0.0.1:8001";//服务提供方地址

    @RequestMapping("/consumer/dept/add")
    public boolean add(Dept dept) {
        return restTemplate.postForObject(REST_URL_PREFIX + "/dept/add", dept, Boolean.class);
    }

    // http://127.0.0.1:8001/dept/list
    @RequestMapping("/consumer/dept/get/{id}")
    public Dept get(@PathVariable("id")Long id) {
        return restTemplate.getForObject(REST_URL_PREFIX + "/dept/get/" + id, Dept.class);
    }

    @RequestMapping("/consumer/dept/list")
    public List<Dept> list() {
        return restTemplate.getForObject(REST_URL_PREFIX + "/dept/list", List.class);
    }

}

RestTemplate配置类

@Configuration
public class ConfigBean {//@Configuration -- spring applicationContext.xml

    @Bean
    public RestTemplate getRestTemplate() {
        return new RestTemplate();
    }

}
posted @ 2022-09-13 22:11  不写代码想写诗的虫子  阅读(30)  评论(0)    收藏  举报