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;
        }
    }
}

版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/03/11/spring-cloud-feign-pass-map-objects-and-multimedia-files/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
海报
Spring Cloud Feign传递map对象和多媒体文件
Feign基本使用 Spring Cloud 通过Feign调用其他微服务的api具体用法 @EnableFeignClients //开启fegin客户端 @SpringBootApplication public class MongodbAp……
<<上一篇
下一篇>>
文章目录
关闭
目 录