OpenFeign设置header的三种方式总结

 更新时间:2023年04月03日 11:23:43   作者:java技术媛  
在微服务间使用Feign进行远程调用时需要在header中添加信息,下面这篇文章主要给大家介绍了关于OpenFeign设置header的三种方式,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

设置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);
}

 总结

到此这篇关于OpenFeign设置header的三种方式的文章就介绍到这了,更多相关OpenFeign设置header内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java线程中的关键字和方法示例详解

    Java线程中的关键字和方法示例详解

    这篇文章主要介绍了Java有关线程中的关键字和方法,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • spring boot实现验证码功能

    spring boot实现验证码功能

    这篇文章主要为大家详细介绍了spring boot实现验证码功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • Java servlet、filter、listener、interceptor之间的区别和联系

    Java servlet、filter、listener、interceptor之间的区别和联系

    这篇文章主要介绍了Java servlet、filter、listener、interceptor之间的区别和联系的相关资料,需要的朋友可以参考下
    2016-11-11
  • Java实现用Mysql存取图片操作实例

    Java实现用Mysql存取图片操作实例

    这篇文章主要介绍了Java实现用Mysql存取图片操作实例,本文讲解了使用BLOB类型保存和读取图片的代码实例,需要的朋友可以参考下
    2015-06-06
  • Java详细讲解IO流的Writer与Reader操作

    Java详细讲解IO流的Writer与Reader操作

    Writer与Reader类不能直接调用,需要使用多带的方法调用它们的子类,在他们的前边加上一个File即可如(FileWriter或FileReader)的多态方法进行其调用,并且他们也是抽象类调用需要连接接口Exception,它们的优点在于可以直接写入或读出内容,不需要使用byte转八进制
    2022-05-05
  • Jar打包用法详解

    Jar打包用法详解

    这篇文章主要介绍了Jar打包用法,详解分析了jar打包命令的各种常见用法及参数含义,非常具有实用价值,需要的朋友可以参考下
    2014-12-12
  • JAVA String.valueOf()方法的用法说明

    JAVA String.valueOf()方法的用法说明

    这篇文章主要介绍了JAVA String.valueOf()方法的用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • spring boot + quartz集群搭建的完整步骤

    spring boot + quartz集群搭建的完整步骤

    这篇文章主要给大家介绍了关于spring boot + quartz集群搭建的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-05-05
  • Java外观模式解读,让你的代码优雅又高效

    Java外观模式解读,让你的代码优雅又高效

    外观模式(Facade Pattern)是一种常用的结构型设计模式,它为复杂的子系统提供一个简单的接口,隐藏复杂的实现细节,本文就来讲讲它是如何简化代码,提高可维护性的
    2023-05-05
  • 深入研究spring boot集成kafka之spring-kafka底层原理

    深入研究spring boot集成kafka之spring-kafka底层原理

    这篇文章主要深入研究了spring boot集成kafka如何实现spring-kafka的底层原理分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-02-02

最新评论