大话SpringCloud---RestTemplate使用时碰到的小坑

这几天在学习SpringCloud,做一个小demo时,需要使用RestTemplate去远程调用一个微服务提供类的接口。出现了一个问题,这一篇博客来记录一下。


大致是这样的,我在客户端远程调用自己编写的服务端的接口来完成增加记录的操作。远程调用成功是成功了,但是增加的数据没有字段值,就是增加的那一行记录全为null值!就只有一个自增的id主键

找了好久的问题,才想起来使用RestTemplate时,远程调用服务端的增加方法,所使用的方法:

CommonResult commonResult = restTemplate.postForObject(payment_url + "/payment", payment, CommonResult.class);

代码中的payment是有值的,但是到服务端就为null了,原来是服务端中参数获取不到:

    @PostMapping("/payment")
    public CommonResult add(Payment payment){

        log.info(payment.toString());

        Integer result = paymentService.add(payment);

        if (result >= 1)
            return new CommonResult(200,"插入成功",result);
        else
            return new CommonResult(400,"插入失败");
    }

需要在payment参数前面加上@RequestBody注解,否则传递过来的值无法映射到参数中,修改后的代码:

    @PostMapping("/payment")
    public CommonResult add(@RequestBody Payment payment){

        log.info(payment.toString());

        Integer result = paymentService.add(payment);

        if (result >= 1)
            return new CommonResult(200,"插入成功",result);
        else
            return new CommonResult(400,"插入失败");
    }

@RequestBodySpringMvc的原生注解,发现到头来很多东西都丢掉了,有空还是需要回去好好看看。这注解的作用大致是将传递过来的json格式串封装到注解所在的参数上,前提是json里面的属性名和参数内的属性名要一致。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值