網站首頁 編程語言 正文
通過攔截器
通過實現Feign的RequestInterceptor接口,重寫里面的apply方法,為RequestTemplate添加請求頭信息
@Component
public class FeignClientsConfigurationCustom implements RequestInterceptor {
@Override
public void apply(RequestTemplate requestTemplate) {
// 此種方式是線程安全的
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder
.getRequestAttributes();
// 不為空時取出請求中的header 原封不動的設置到feign請求中
if (null != attributes) {
HttpServletRequest request = attributes.getRequest();
if (null != request) {
// 遍歷設置 也可從request取出整個Header 寫到RequestTemplate 中
Enumeration<String> headerNames = request.getHeaderNames();
if (headerNames != null) {
while (headerNames.hasMoreElements()) {
String name = headerNames.nextElement();
String values = request.getHeader(name);
requestTemplate.header(name, values);
}
}
}
}
}
}
@Headers注解
@FeignClient(name = "testClient", configuration = FeignClientsConfigurationCustom.class)
public interface testServer{
@GetMapping("/test")
@Headers({"Content-Type: application/json","Accept: application/json"})
String test(@RequestParam String param);
}
異步
無法直接通過獲取HttpServletRequest來獲取Header,那么可以稍微改造一下,在原來的基礎上添加一個攔截器。 所有的請求過來的時候,在攔截器中將Header先取出來,然后設置到本線程私有的Map中。
原來的apply方法在提交請求的時候再通過ThreadLocal提供的remove方法,清除掉。
原文鏈接:https://blog.csdn.net/weixin_35973945/article/details/125806849
- 上一篇:Linux Redis-6.2.6單機部署
- 下一篇:淺談常見的加密算法
相關推薦
- 2022-10-26 Jenkins+Docker?一鍵自動化部署?SpringBoot?項目的詳細步驟_docker
- 2022-09-23 Pandas時間類型轉換與處理的實現示例_python
- 2022-12-07 深入了解Rust中函數與閉包的使用_Rust語言
- 2022-03-18 Android?Activity生命周期調用的理解_Android
- 2022-09-25 ubuntu 20.04 開機黑屏小橫杠和循環登錄
- 2022-07-04 C#中File靜態類對文件的讀取寫入_C#教程
- 2022-08-19 vscode遠程免密登入Linux服務器的配置方法_Linux
- 2023-01-19 C++深度探索虛函數指針示例_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支