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

Feign基本使用

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

1
2
3
4
5
6
7
@EnableFeignClients //开启fegin客户端
@SpringBootApplication
public class MongodbApiApplication {
   publicstaticvoid main(String[] args) {
      SpringApplication.run(MongodbApiApplication.class, args);
   }
}
1
2
3
4
5
6
//@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传递多媒体文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@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;
}
}
}

Powered by AppBlog.CN     浙ICP备14037229号

Copyright © 2012 - 2020 APP开发技术博客 All Rights Reserved.

访客数 : | 访问量 :