Spring Cloud Feign传递map对象和多媒体文件

Feign基本使用

Spring Cloud 通过Feign调用其他微服务的api具体用法

@EnableFeignClients //开启fegin客户端
@SpringBootApplication
public class MongodbApiApplication {
   publicstaticvoid main(String[] args) {
      SpringApplication.run(MongodbApiApplication.class, args);
   }
}
//@FeignClient(value=调用的服务的名字, fallback=熔断器的类)
@FeignClient(value = "mongodb", fallback = MongodbHystrix.class)
publicinterfaceMongodbApi {
   @RequestMapping(name = "/findById", method = RequestMethod.POST)
   public Object findById(@RequestBody Map<String, Object> map);
}

Fegin传递map对象

GET请求每个方法参数都默认有@RequestParam注解,最好指定value的值参数;如果是对象需要使用@RequestBody,该注解每个方法最多只能传递一个对象,如果需要传递多个对象就需要用map来传递

传递对象和map必须是post请求,并且加上@RequestBody修饰

用map传递对象的一些坑

  1. 通过Feign传递map对像,接收到对象之后自动转成String(json)
  2. 通过map传递基本数据类型,接收时也会变成String类型

Fegin传递多媒体文件

@FeignClient(value = "fastdfs", configuration = FeignMultipartSupportConfig.class)
public interface FastDFSApi {

    @RequestMapping(value = "/uploadImage", method = RequestMethod.POST, produces = {
            MediaType.APPLICATION_JSON_UTF8_VALUE }, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    public String uploadImageAndCrtThumbImage(@RequestPart MultipartFile multipartFile);

    @Configuration
    public class FeignMultipartSupportConfig {

        @Bean
        @Primary
        @Scope("prototype")
        public Encoder multipartFormEncoder() {
            return new SpringFormEncoder();
        }

        @Bean
        public feign.Logger.Level multipartLoggerLevel() {
            return feign.Logger.Level.FULL;
        }
    }
}
上一篇 Spring Cloud手动定义Feign客户端
下一篇 Spring Cloud 获取注册中心所有服务以及服务下的所有实例
目录
文章列表
1 MySQL判断数据库表和表字段是否存在
MySQL判断数据库表和表字段是否存在
2
React Native学习之开源侧边栏组件react-native-side-menu
React Native学习之开源侧边栏组件react-native-side-menu
3
Swift UI - 给表格添加编辑功能(删除,插入)
Swift UI - 给表格添加编辑功能(删除,插入)
4
Spring Boot集成XStream转换器:处理xml节点中既有属性又有值
Spring Boot集成XStream转换器:处理xml节点中既有属性又有值
5
容器部署ELK7.10,适用于生产
容器部署ELK7.10,适用于生产
最新评论
一位WordPress评论者
一位WordPress评论者
2月12日
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。