我有一个Spring启动应用程序,并且想要创建一个具有静态定义标头值的Feign客户端(用于auth,但不是基本身份验证)。我找到了@Headers
注释,但它似乎并不适用于Spring Boot领域。我怀疑这与使用SpringMvcContract
。
这是我想要的代码:
@FeignClient(name = "foo", url = "http://localhost:4444/feign")
@Headers({"myHeader:value"})
public interface LocalhostClient {
但它没有添加标题。
我用我的尝试制作了一个干净的春季启动应用程序并发布到github:github example
我能够使其工作的唯一方法是将RequestInterceptor
定义为全局bean,但我不想这样做,因为它会影响其他客户端。
答案 0 :(得分:4)
您还可以通过向各个方法添加标题来实现此目的:
@RequestMapping(method = RequestMethod.GET, path = "/resource", headers = {"myHeader=value"})
Using @Headers with dynamic values in Feign client + Spring Cloud (Brixton RC2)使用@RequestHeader
讨论了动态值的解决方案。
答案 1 :(得分:2)
您可以在feign界面上设置特定的配置类,并在其中定义RequestInterceptor bean。例如:
@FeignClient(name = "foo", url = "http://localhost:4444/feign",
configuration = FeignConfiguration.class)
public interface LocalhostClient {
}
@Configuration
public class FeignConfiguration {
@Bean
public RequestInterceptor requestTokenBearerInterceptor() {
return new RequestInterceptor() {
@Override
public void apply(RequestTemplate requestTemplate) {
// Do what you want to do
}
};
}
}