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提供托管服务
- 亚马逊员工权益组织呼吁AWS拒绝为Parler提供托管服务
- 大众展示EV公共充电新解决方案:移动充电机器人
- 普渡机器人获最佳商用服务机器人奖
- 「央广网评」扫码点餐 技术进步不能脱离人性化服务
- 与荷兰光刻机完成联机!国产芯片设备传来喜讯:技术问题已经解决
- 尼康发布服务公告:将不再为镜头及配件提供全球联保服务
- 华为云知识计算解决方案获首批“知识图谱产品认证证书”
- 国产芯再传好消息,关键技术问题已经解决,与荷兰光刻机联机成功
- 分析师预测苹果新服务可能包括播客+股票+和 邮件+