使用RestTemplate的postForObject方法直接传递对象

本文介绍了在Spring Boot中使用RestTemplate的postForObject方法进行POST请求时,如何通过@RequestBody注解正确传递对象。在订单支付成功后,系统需要向中间商系统发送消息通知,通过Rabbitmq实现消息推送。如果不加@RequestBody注解,请求对象的字段将会为null。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用户支付成功后,我们要向中间商的系统打款,【订单支付成功接口】请求内部的【消息推送接口】,通过Rabbitmq消息通知中间商的系统,他们返回打款是否成功,这里展示的是【订单支付成功接口】向【消息推送接口】的请求。

@RequestBody这个注解很重要,一定要加这个注解,否则请用户求对象huaBoOrderPushRequest对象的字段都为null。

【消息推送接口】

/**
 * @author johny
 * @date 2020/5/13
 */
@RestController
@RequestMapping("/order")
@Slf4j
public class OrderController {
    @Autowired
    private OrderService orderService;
    @Autowired
    private RabbitTemplate rabbitTemplate;
    @PostMapping("/push")
    public ResultData updateOrderStatus(@RequestBody HuaBoOrderPushRequest huaBoOrderPushRequest){
        HuaBoOrderPushDomainFactory huaBoOrderPushDomainFactory = new  HuaBoOrderPushDomainFactory();
        HuaBoOrderPushDomain huaBoOrderPushDomain = huaBoOrderPushDomainFactory.compose(huaBoOrderPushRequest);
        try {
            orderService.updateOrderByHuaBoOrderPush(huaBoOrderPushDomain);
        }catch (Exception e){
            log.error("更改订单支付状态失败:",e);
            return ResultData.getFailResult(e.getMessage());
        }
        return ResultData.getSuccessResult();
    }
}

【订单支付成功接口】

@Autowired
    RestTemplate restTemplate;

    /**
     * 主订单号	orderId
     * 客户订单号	outTradeId
     * 订单状态	orderStatus
     * 错误消息	cause
     * 签名	sign
     */
    public ResultData orderPush(HuaboOrderPushRequest huaboOrderPushRequest) throws MalformedURLException {
        ......

        ResponseEntity<ResultData> resp = restTemplate.postForEntity(PropertyUtil.getProperty("huabo.order.push"), huaboOrderPushRequest, ResultData.class);

        return resp.getBody();
    }

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值