项目中有使用restTemplate转发表单数据和上传文件,之前都是将表单数据json传到后台进行序列化,这样一来代码就显得十分不美观,后来发现使用@RequestPart注解可直接进行数据绑定,十分优雅地解决了这个问题。
客户端代码:
public void save(FormData formData, MultipartFile[] applyFiles) {
MultiValueMap<String, Object> multiValueMap = new LinkedMultiValueMap<>();
multiValueMap.add("formData", formData);
List<Resource> tmpResource = new ArrayList<>();
for (MultipartFile multipartFile : applyFiles) {
if (multipartFile != null) {
tmpResource.add(multipartFile.getResource());
}
}
multiValueMap.addAll("applyFile", tmpResource);
restTemplate.postForObject("localhost:8080/demo/matter/save", multiValueMap, Void.class);
}
服务端代码:
@PostMapping("/save")
public void save(@RequestPart(required = false) FormData formData,
@RequestParam(value="applyFile", required=false) MultipartFile[] applyFiles) {
。。。
}