restTemplate 使用问题小记
使用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);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律