SpringCloud服务之间Feign调用不会带上请求头header的解决方法
更新时间:2024年01月16日 14:43:04 作者:孟德爱吃香菜
在Spring Cloud中,使用Feign进行服务之间的调用时,默认情况下是不会传递header的,这篇文章给大家介绍SpringCloud服务之间Feign调用不会带上请求头header的解决方法,感兴趣的朋友一起看看吧
三种方式设置请求头
在Spring Cloud中,使用Feign进行服务之间的调用时,默认情况下是不会传递header的。如果需要传递header,可以通过以下几种方式实现:
@RequestHeader
1.在Feign的接口方法上使用@RequestHeader注解,指定要传递的header参数。例如:
@FeignClient(name = "other-service") public interface OtherServiceClient { @GetMapping("/api/some-resource") ResponseEntity<String> getSomeResource(@RequestHeader("Authorization") String token); }
@Bean RequestInterceptor
2.在Feign的配置类中配置RequestInterceptor,用于设置header。例如:
@Configuration public class FeignClientConfig { public HttpServletRequest getRequest() { return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); } @Bean public RequestInterceptor requestInterceptor() { return template -> { template.header("platform", getRequest().getHeader("platform")); }; } }
实现 RequestInterceptor
3.在Feign的配置文件中配置header。例如:
feign: client: config: default: loggerLevel: full requestInterceptors: - com.example.MyRequestInterceptor
public class MyRequestInterceptor implements RequestInterceptor { public HttpServletRequest getRequest() { return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); } @Override public void apply(RequestTemplate template) { template.header("platform", getRequest().getHeader("platform")); } }
以上是三种常用的方式,根据具体的需求选择适合的方式即可。
到此这篇关于SpringCloud服务之间Feign调用不会带上请求头header的文章就介绍到这了,更多相关SpringCloud Feign内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Java随机值设置(java.util.Random类或Math.random方法)
在编程中有时我们需要生成一些随机的字符串作为授权码、验证码等,以确保数据的安全性和唯一性,这篇文章主要给大家介绍了关于Java随机值设置的相关资料,主要用的是java.util.Random类或Math.random()方法,需要的朋友可以参考下2024-08-08
最新评论