springcloud feign 传递map 对象 多媒体文件

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(@RequestParam Map map);}

 

get请求每个方法参数都默认有@RequestParam 这个注解 ,最好指定value的值参数如果时对象需要@requestBody 这个注解每个方法最多只能传递一个对象,如果需要传递多个对象就需要用map来传递.

Post请求, 传递map必须是post请求如上          对象必须是post请求  @requestBody 修饰

RequestParam实质是将Request.getParameter() 中的Key-Value参数Map利用Spring的转化机制ConversionService配置,转化成参数接收对象或字段。 @RequestParam   get post 方法都可以用

 

map 传递对象的一些坑

1.通过feign map传递对像接受到对象之后对象自动转成String(json)

类型,如果需要class的信息可以通过反射获取;

2.通过map 传递基本数据类型 接受的时候也会变成 String类型,如果需要类型可以在map的key中做标识

 

 

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

 

 

 

你可能感兴趣的:(技术人生)