Feign解决服务之间传递文件、传递list,map、对象( 三 )
> encodeMultipartFile(MultipartFile file){HttpHeaders filePartHeaders = new HttpHeaders();//设置 Content-typefilePartHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM);try {Resource multipartFileResource = new MultipartFileResource(file.getInputStream(), file.getOriginalFilename(), file.getSize());return new HttpEntity<>(multipartFileResource, filePartHeaders);} catch (IOException e) {throw new EncodeException("无法对请求进行编码:", e);}}/*** 判断是否多个 MultipartFile* @param object* @return*/private boolean isMultipartFileArray(Object object){return object != null}/*** 判断是否MultipartFile文件* @param object 要判断的对象* @return*/private boolean isMultipartFile(Object object){return object instanceof MultipartFile;}}【Feign解决服务之间传递文件、传递list,map、对象】将该编码器注册为bean
import feign.Contract;import feign.codec.Encoder;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;/** * 上传文件所用配置 * @author admin */@Configurationpublic class MultipartSupportConfig {/*** 启用feigin自定义注解支持 , 如 @RequestLine 和 @Param* @return*/@Beanpublic Contract feignContract(){return new Contract.Default();}/*** feign 实现多pojo传输与MultipartFile上传 编码器 , 需配合开启feign自带注解使用* @return*/@Beanpublic Encoder feignSpringFormEncoder(){//注入自定义编码器return new FeignSpringFormEncoder();}}
这个时候就基本告一段落 ,
所有的请求按照这个标准来写
/*** 示例代码:请求方式和路径之间须有一个空格 。表单提交的话请求方式只能是post* 支持如下的所有请求方式 。* 请求参数需要 @Param 修饰* 在接收端 , 采用@RequestPart注解接收每一个参数 。 所有接收都用 @RequestPart(value = "http://kandian.youth.cn/index/advertiser", required = false)* @return*/@RequestLine(value = "http://kandian.youth.cn/index/POST /data/test01")ResultJson test01(@Param(value = "http://kandian.youth.cn/index/name") String name,@Param(value = "http://kandian.youth.cn/index/nametwo") String nametwo,@Param(value = "http://kandian.youth.cn/index/file") MultipartFile file,@Param(value = "http://kandian.youth.cn/index/advertiserMap") Map advertiserMap,@Param(value = "http://kandian.youth.cn/index/materials") List
要使用 Feign 自带的注解 , @RequesLine 和 @Param 来做请求参数的注入 ,
我测试的时候 , 使用 如下这些参数 , 都可以完成传递、
/*** 示例代码:feign请求测试* @return*/public String test01(){try {String name = "中文";String nametwo = "two";MultipartFile file = fileToMultipartFile(new File("E:\\临时\\1.xlsx"));MultipartFile file2 = fileToMultipartFile(new File("E:\\临时\\2.xlsx"));Map advertiserMap = new HashMap<>();User user = new User();user.setXm("张三");User user1 = new User();user1.setXm("张四");advertiserMap.put("zw", user);advertiserMap.put("中", user1);List
推荐阅读
- 亚马逊终止托管服务:Parler网站下线
- Git服务器配置错误导致日产汽车源码在网上泄露
- 虾米音乐,下个月正式停止服务
- 虾米音乐播放器将于2月5日停止服务,今开启用户资产处理通道
- 服务|虾米音乐:2月5日关停3月5日后将无法登录
- 天猫精灵App全新升级,推出“精灵家”服务
- 快递员拒绝送货上门并大喊大叫!经济学者马光远吐槽德邦快递服务烂:流氓至此,坚决抵制
- 亚马逊宣布停止为Parler提供托管服务
- 亚马逊员工权益组织呼吁AWS拒绝为Parler提供托管服务
- 大众展示EV公共充电新解决方案:移动充电机器人