【发布时间】:2020-11-26 14:34:11
【问题描述】:
嗨,我想要实现的是我想使用其他 API 并使用 RestTemplate 将一些响应数据放入我的函数中的 List,这是我的代码的样子:
@PostMapping("/save-new")
public ResponseEntity<ShipmentAddressGrouping> saveNewShipmentAddressGrouping(@Valid @RequestBody InputRequest<ShipmentAddressGroupingDto> request) {
String url = baseUrl + "/load-list";
HttpEntity<PartnerShipmentDto> requestPartnerShipmentDto = new HttpEntity<>(new PartnerShipmentDto());
RestTemplate restTemplate = new RestTemplate();
List<PartnerShipmentDto> partnerShipmentDto = restTemplate.postForObject(url, requestPartnerShipmentDto, new ParameterizedTypeReference<List<PartnerShipmentDto>>() {});
ShipmentAddressGrouping newShipmentAddressGrouping = shipmentAddressGroupingService.save(request);
return ResponseEntity.ok(newShipmentAddressGrouping);
}
如您所见,我尝试在 List 中获取响应,我在这里尝试restTemplate.postForObject(url, requestPartnerShipmentDto, new ParameterizedTypeReference<List<PartnerShipmentDto>>() {});
但我在 restTemplate.postForObject 中得到如下下划线的错误:
方法 postForObject(String, Object, Class, Object...) 在 类型 RestTemplate 不适用于参数(字符串, HttpEntity,新 ParameterizedTypeReference
(){})
我应该改变什么来解决这个问题?
【问题讨论】:
-
我自己没有尝试过
postForObject,但是从查看:docs.spring.io/spring-framework/docs/current/javadoc-api/org/… 看起来postForObject的三进制for 需要第三个参数是responseType,所以List.class会在你的情况下工作,但你会收到关于泛型的警告。 -
嗨@BillNaylor,它也对我有用,但是我收到了关于泛型的警告,我选择使用 Bernard 回答来使用交换而不是 postForObject,所以我也可以指定另一种方法,谢谢。我会找到 List.class 将来可以在哪里使用非常感谢你
-
我认为为了避免泛型警告,您可以将
List<PartnerShipmentDto>封装在您自己的类中,然后引用它。
标签: java spring microservices resttemplate