• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

SpringCloud/远程服务调用消费者接收生产者数据为空

武飞扬头像
Stag×Buck雄鹿
帮助1

本文生产者消费者可以对调

一开始建了个消费者

消费者:

@RestController
@RequestMapping("/dept")
public class DeptController {
    @Autowired
    private DeptService deptService;

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

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

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

}
学新通

请求:

http://localhost:8001/dept/addDept?deptName="事业部"
http://localhost:8001/dept/queryById/1
http://localhost:8001/dept/queryAll

结果:

true
{"id":1,"deptName":"事业部",,"dbSource":"SpringCloud"}
{"id":1,"deptName":"事业部",,"dbSource":"SpringCloud"}

没问题

然后又建了个生产者

生产者:

@RestController
@RequestMapping("/dept")
public class DeptConsumerController {

    @Autowired
    private RestTemplate restTemplate;//提供多种便捷访问远程http服务的方法,简单的Restful服务模板

    private static final String REST_URL_PREFIX="http://localhost:8001";
    private static final String DEPT="/dept";

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

    @RequestMapping("/get/{id}")
    public Dept get(@PathVariable("id") Long id){
        return restTemplate.getForObject(REST_URL_PREFIX DEPT "/queryById/" id,Dept.class);
    }

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


}
学新通

消费者调用生产者
请求:

http://localhost:8002/dept/add?deptName="事业部2"
http://localhost:8002/dept/get/2
http://localhost:8002/dept/list

结果:

true
{"id":2,"deptName":null,"dbSource":"SpringCloud"}
[{"id":1,"deptName":"事业部",,"dbSource":"SpringCloud"},{"id":2,"deptName":null,"dbSource":"SpringCloud"}]

发现两边接口都能用,但是add方法传给生产者的值为空,也没有报错。

解决方法:

后来发现是生产者接收的问题,把代码改成:

    @RequestMapping("/addDept")
    public boolean addDept(@RequestBody Dept dept){//没有@RequestBody的话收到的值就会为空
        return deptService.addDept(dept);
    }

请求:

http://localhost:8002/dept/add?deptName="事业部2"
http://localhost:8002/dept/get/3
http://localhost:8002/dept/list

结果:

true
{"id":3,"deptName":"事业部2","dbSource":"SpringCloud"}
[{"id":1,"deptName":"事业部",,"dbSource":"SpringCloud"},{"id":2,"deptName":null,"dbSource":"SpringCloud"},
{"id":3,"deptName":"事业部2","dbSource":"SpringCloud"}]

问题解决!!!

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhhachjc
系列文章
更多 icon
同类精品
更多 icon
继续加载