使用restTemplate在后端进行接口转发, 期间包括文件上传, 预览和下载. 还有一些字符串或css/js文件的读取.
1. 文件上传
参考: RestTemplate转发MultipartFile
LinkedMultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
params.add("file", file.getResource());
// headers转发token等参数
// httpMethod 之前的请求方法
return new RequestEntity<>(params, headers, httpMethod, new URI(url));
2. 文件预览和下载
之前是使用Object接收
restTemplate.exchange(requestEntity, Object.class);
在返回文件和text时候会有HttpMessageNotWritableException
异常
可参考: 被坑过后才知道学习HttpMessageConverter有多重要 或 被坑過後才知道學習HttpMessageConverter有多重要 中的方式3.
或者使用byte[]接收
restTemplate.exchange(requestEntity, byte[].class);
3. 转发请求后的结果中添加内容(业务需求)
之前使用Object接收的话
Map<String, Object> resultMap = BeanUtil.beanToMap(responseEntity.getBody(), false, false);
如果使用byte[], 需要涉及到字节数组转对象, 其实需要字节转字符串, 再转对象即可
参考: java中字节数组与对象之间的转换
Map<Object, Object> resultMap = JSONUtil.toBean(new String(responseEntity.getBody()), Map.class);