@RequestBody 和@RequestParam 的 RestTemplate

RestTemplate for @RequestBody and @RequestParam

我正在尝试使用 RestTemplate 来调用 POST api :

RequestorParam  test = new RequestorParam();
test.setScopeMcg("MCG");
test.setSituatedDealIds(situatedDealIds);

String url = "http://localhost:" + serverPort + "/retrieveAttributes";
ResponseEntity<SituatedDeals> response = restTemplate.postForEntity(url, test, SituatedDeals.class);

控制器的代码就像;

  @PostMapping(value = "/retrieveAttributes", produces = "application/json")
  @ResponseBody
  @Duration
  public SituatedDeals retrieveAttributes(
        @RequestParam String scopeMcg, 
        @RequestBody SituatedDealIds situatedDealIds 
    ) {
        log.info("success")
  }

我收到了错误的请求,有人可以帮忙吗?

  1. 根据您的控制器代码,您实际上没有返回任何 SituatedDeals 类型的响应实体,只是将其记录为成功。这可能是 null 对象响应的原因。

  2. scopeMcg 是一个 RequestParameter,因此您应该以请求参数格式传递它,即 http://localhost:8080/retrieveAttributes?scopeMcg=MCG 参考:Spring Request Param

  3. 您的 test 对象是您的 post 请求的实际负载,它应该是 SituatedDealIds 对象类型。 参考:Rest-Template post for Entity