当前位置:网站首页>OpenFeign设置header的3种方式
OpenFeign设置header的3种方式
2022-08-02 12:21:00 【m0_67394006】
设置OpenFeign的FeignClient的Header信息
在微服务间使用Feign进行远程调用时需要在 header 中添加信息,那么 SpringBoot和SpringCloud OpenFeign的@FeignClient如何设置 header 呢?有5种方式可以设置请求头信息:
- 在@RequestMapping注解里添加headers属性
- 在方法参数前面添加@RequestHeader注解
- 实现RequestInterceptor接口
由于Feign是完全支持Spring MVC注解的, 所以推荐使用前两种Feign设置header的方式, 即: Spring MVC中使用注解设置header.
1、在**@RequestMapping
**注解里添加headers属性
在application.yml中配置
my.name=wtl
@PostMapping(value = "/service/rest/v1/script/{scriptName}/run",headers = {"Authorization=Basic YWRtaW46QFdUTDE5OTIwMTE4MDI3MQ==","Content-Type=text/plain","AppSecret=${my.name}"})
String runScript(@PathVariable("scriptName") String scriptName);
2、在方法参数前面添加@RequestHeader
注解
设置单个header属性
@PostMapping(value = “/service/rest/v1/script/{scriptName}/run”,headers = {“Content-Type=text/plain”,“AppSecret=${my.name}”})
String runScript(@PathVariable(“scriptName”) String scriptName,@RequestHeader(“Authorization”) String authorization);public String runScript(String scriptName) {
return nexusOpenFeign.runScript(scriptName,“Basic YWRtaW46QFdUTDE5OTIwMTE4MDI3MQ==”);
}
设置多个header属性
@PostMapping(value = “/service/rest/v1/script/{scriptName}/run”)
String runScript(@PathVariable(“scriptName”) String scriptName,@RequestHeader MultiValueMap<String, String> headers);public String runScript(String scriptName) {
MultiValueMap<String, String> headers = new HttpHeaders();
headers.put(“Authorization”, Collections.singletonList(“Basic YWRtaW46QFdUTDE5OTIwMTE4MDI3MQ==”));
headers.add(“Content-Type”,“text/plain”);
return nexusOpenFeign.runScript(scriptName,headers);
}
3、实现RequestInterceptor
接口
如果FeignRequestInterceptor注入到spring容器的话就会全局生效, 就是说即使在没有指定configuration属性的FeignClient该配置也会生效。
配置@Component或@Service 或 @Configuration 就可以将该配置注入spring容器中, 即可实现全局配置, 从而该项目中的所有FeignClient的feign接口都可以使用该配置.
如果只想给指定FeignClient的feign接口使用该配置, 请勿将该类配置注入spring中。
@Configuration
public class FeignRequestInterceptor implements RequestInterceptor {
@Override
public void apply(RequestTemplate template) {
template.header(HttpHeaders.AUTHORIZATION, "tokenVal");
}
}
@FeignClient(url = "${user.api.url}", name = "user", configuration = FeignRequestInterceptor.class)
public interface UserFeignClient {
@GetMapping(value = "/simple/{id}")
public User findById(@RequestParam("id") String id);
}
先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦
边栏推荐
猜你喜欢
The use of QListView
Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单。
How to better assess credit risk?Just watch this scorecard model live
Thymeleaf
Likou 35 - search for insertion position - binary search
AQS-AbstractQueuedSynchronizer
SQL Server 数据库之导入导出数据
QAbstractScrollArea、QScrollArea
SQL Server如何建表
如何搭建威纶通触摸屏与S7-200smart之间无线PPI通信?
随机推荐
Create your own app applet ecosystem with applet containers
如何更好评估信用贷风险?看这场评分卡模型直播就可以了
从幻核疑似裁撤看如何保证NFT的安全
今日睡眠质量记录85分
zabbix自动化监控脚本
数据湖(二):什么是Hudi
SQL函数 TRIM
How to set up wireless PPI communication between Weiluntong touch screen and S7-200smart?
simulink PID自动整定
The 7 most commonly used data analysis thinking, solve 95% of the analysis problems
借小程序容器打造自有App小程序生态
面积曲线AUC(area under curve)
元宇宙“吹鼓手”Unity:疯狂扩局,悬念犹存
numpy&pands 中的unique
php字符串的截取方式
故障分析 | 一条 SELECT 语句跑崩了 MySQL ,怎么回事?
SQL function TRIM
QListView的使用
【Acunetix-Forgot your password】
Chapter 11 Documents