如何用RestTemplate同时传递一个Java对象和基本类型的参数?

我用RestTemplate想两个参数,一个是自己写的Java类,一个是基本类型

请求的Controller

    @RequestMapping("/buy")
    public int buy(@RequestBody GoodsDetail goodsDetail,Integer buyCount){
        goodsDetail.setRemaining(goodsDetail.getRemaining() - buyCount);
        int num = goodsDetailMapper.updateByPrimaryKey(goodsDetail);
        return num;
    }

用getForObject:

    Map<String,Object> map = new HashMap<>();
    map.put("goodsDetail",goodsDetail);
    map.put("buyCount",buyCount);
    int num = restTemplate.getForObject("http://localhost:8088/shop-buy/buy?goodsDetail={goodsDetail}&buyCount={buyCount}", int.class, map);

报400 null图片说明

用postForObject:

        MultiValueMap<String,Object> multiValueMap = new LinkedMultiValueMap<>();
        multiValueMap.add("goodsDetail",goodsDetail);
        multiValueMap.add("buyCount",buyCount);
        int num = restTemplate.postForObject("http://localhost:8088/shop-buy/buy", multiValueMap, int.class);

报415 null 图片说明

求救,要疯掉了!


慕容森
浏览 3311回答 3
3回答

Qyouu

@RequestMapping("/buy/{buyCount}") &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;int&nbsp;buy(@RequestBody&nbsp;GoodsDetail&nbsp;goodsDetail,@PathParam&nbsp;("buyCount")&nbsp;Integer&nbsp;buyCount){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;goodsDetail.setRemaining(goodsDetail.getRemaining()&nbsp;-&nbsp;buyCount); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;num&nbsp;=&nbsp;goodsDetailMapper.updateByPrimaryKey(goodsDetail); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;num; &nbsp;&nbsp;&nbsp;&nbsp;}

人到中年有点甜

你可以了解一下请求体类型

慕运维8079593

@RequestParam 或者将这两个封装到一个实体类
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java