SpringBoot如何通过Feign调用传递Header中参数
作者:温柔的星空,让你感动 时间:2023-11-24 21:39:29
【SpringBoot】通过Feign调用传递Header中参数
如何通过Feign传递Header参数
问题描述
我们在SpringCloud中使用Feign请求另一个服务的Api接口时,有将Header中参数传递下去的需求,如果不做特殊处理,就会将Header中的参数丢失。
解决方案
方案一:通过 @RequestHeader(name = "headerName") 来传递
例如:Feign定义如下
@FeignClient(name = "service-name")
public interface XXXFeignClient {
@RequestMapping(value = "/user/getUserTicket", method = RequestMethod.GET)
String getUserTicket(@RequestParam("id") String id);
}
假设在服务service-name中的/user/getUserTicket接口需要从Header中取Referer数据,那么我们可以将上面代码进行改造:
@FeignClient(name = "service-name")
public interface XXXFeignClient {
@RequestMapping(value = "/user/getUserTicket", method = RequestMethod.GET)
String getUserTicket(@RequestParam("id") String id, @RequestHeader(name = "Referer") String referer);
}
然后在调用的时候将referer参数传递进去即可,如
public String getTicketById(@RequestParam("id") String id, HttpServletRequest request) {
String referer = request.getHeader("Referer");
return xxxFeignClient.getUserTicket(id, referer);
}
方案二:通过实现 RequestInterceptor 接口
首先,自定义实现RequestInterceptor接口的apply方法,如下
import org.springframework.stereotype.Configuration;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.util.Enumeration;
@Configuration
public class FeignConfiguration implements RequestInterceptor {
@Override
public void apply(RequestTemplate requestTemplate) {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder
.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
Enumeration<String> headerNames = request.getHeaderNames();
if (headerNames != null) {
while (headerNames.hasMoreElements()) {
String name = headerNames.nextElement();
String values = request.getHeader(name);
requestTemplate.header(name, values);
}
}
}
}
然后将自定义的配置类配置到Feign中,就可以实现该Feign中接口Header参数的传递
@FeignClient(value = "service-name" ,configuration = FeignConfiguration.class)
public interface XXXFeignClient {
}
来源:https://www.cnblogs.com/cheng2839/p/14715057.html
标签:SpringBoot,Feign,Header,参数
0
投稿
猜你喜欢
Android自定义view系列之99.99%实现QQ侧滑删除效果实例代码详解
2022-05-08 15:35:55
SpringBoot Knife4j在线API文档框架基本使用
2022-03-10 21:27:48
Springboot Websocket Stomp 消息订阅推送
2022-05-08 14:39:30
深入了解C#设计模式之订阅发布模式
2021-08-14 05:31:39
java寻找迷宫路径的简单实现示例
2021-07-06 13:17:50
SpringBoot零基础入门之基本操作与概念
2023-10-25 00:41:36
深入浅析Mybatis的缺陷问题
2023-07-19 19:39:46
Android so的热升级尝试
2023-08-07 22:41:59
java 学习笔记(入门篇)_多选择结构switch语句
2023-02-04 11:35:59
Java实现导入导出Excel文件的方法(poi,jxl)
2021-09-13 21:12:35
android短信管理器SmsManager实例详解
2021-09-03 18:17:18
C# 语言入门基础介绍
2022-03-02 13:32:33
C#中用foreach语句遍历数组及将数组作为参数的用法
2022-03-14 16:25:12
Kotlin实用语法糖空安全类型转换及相等性判断
2021-09-03 20:23:49
Android EditText追加空格、限制字符等方法示例
2023-10-02 17:10:47
Java中ReentrantLock4种常见的坑
2021-09-26 10:51:46
C语言中数据是如何存储在内存中的
2021-07-03 02:13:34
Java二维数组计算集合总结
2023-02-15 16:38:14
Android编程实现自动检测版本及自动升级的方法
2023-06-07 16:24:23
java简单列出文件夹下所有文件的方法
2022-12-23 19:25:05