Feign入参传到对应服务显示为null的问题

在这里插入图片描述
需要加对应的@RequestParam才行
具体原理暂时不清楚,埋个坑,有空再研究原理()

Feign是一个声明式的Web服务客户端,它使得编写Web服务客户端变得更加简单。Feign整合了Ribbon和Hystrix,并且有可插拔式的注解支持,包括Feign自身的注解和JAX-RS注解。使用Feign,我们可以通过简单的注解来调用REST服务。 当你需要通过Feign调用一个服务,并且为`ByteArrayInputStream`时,你需要自定义Feign的RequestInterceptor来手动设置请求体。因为Feign默认情况下处理不了`ByteArrayInputStream`这类对象,它通常处理的是`byte[]`或者`String`等类型。这里是一个简单的例子,展示如何通过自定义RequestInterceptor来处理`ByteArrayInputStream`的: ```java import feign.RequestInterceptor; import feign.RequestTemplate; public class ByteArrayRequestInterceptor implements RequestInterceptor { @Override public void apply(RequestTemplate template) { // 假设你已经有了一个ByteArrayInputStream对象 InputStream inputStream = ...; // 将ByteArrayInputStream的内容转换为byte数组 byte[] content = IOUtils.toByteArray(inputStream); // 将字节流包装在BufferedInputStream中 InputStream bufferedStream = new BufferedInputStream(new ByteArrayInputStream(content)); // 设置请求体 template.body(content); // 如果有必要,设置Content-Type头部 template.header("Content-Type", "application/octet-stream"); } } ``` 在你的Feign客户端接口中使用这个自定义的Interceptor: ```java @FeignClient(name = "example-service", configuration = ByteArrayRequestInterceptor.class) public interface ExampleServiceClient { @RequestMapping(value = "/upload", method = RequestMethod.POST) void upload(@RequestBody InputStream data); } ``` 这样,当你调用`upload`方法时,`ByteArrayRequestInterceptor`会处理传的`ByteArrayInputStream`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值