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

本文介绍如何使用SpringCloud Feign实现微服务之间的API调用,包括配置、基本用法及常见问题解决。涉及GET和POST请求处理、参数传递方式、使用@FeignClient注解以及熔断器配置等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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<String,Object> 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;
    }
}

欢迎大家关注我的微信公众号 您的关注就是我不懈的动力

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值