項目中有使用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) {
。。。
}