Feign设置Header头部参数

该博客介绍了如何在Spring中使用FeignClient注解配置远程调用,并展示了如何实现一个全局请求拦截器FeignInterceptor,设置请求头中的XX_TOKEN。示例代码包括了FeignClient接口定义和拦截器的配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@FeignClient(name = "kafka-client", url = "http://kafka.xxx.com")
public interface KafkaClient {

    @GetMapping(value = "/api/clusterManager/listTopics")
    @Headers( {"cache-control: no-cache", "username: wangyong@xxx.com"})
    TopicsResponse listTopics(@RequestParam("clusterName") String clusterName,
                              @RequestParam("clusterArea") String clusterArea);
}

 第二中全局

 

import feign.RequestInterceptor;
import feign.RequestTemplate;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;


@Configuration
@Component
public class FeignInterceptor implements RequestInterceptor {

    public void apply(RequestTemplate requestTemplate){
        requestTemplate.header("XX_TOKEN", "aaa");
    }
}

下面一种权重要高于上面一种

### 使用 Feign 拦截器修改或访问请求参数 为了在 Spring Cloud 中利用 Feign 进行 HTTP 请求并自定义这些请求的行为,可以创建实现了 `RequestInterceptor` 接口的类。此类允许开发者在实际发出请求之前对其进行处理,比如添加头信息、查询参数或是更改现有参数。 下面是一个具体的例子展示怎样构建一个简单的拦截器用于向所有的 Feign 客户端请求附加特定的头部数据: ```java import feign.RequestTemplate; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; @Component public class CustomFeignInterceptor implements feign.RequestInterceptor { @Override public void apply(RequestTemplate template) { // 向所有请求中加入名为 "Authorization" 的 header 字段,并设置其值为 token。 String token = "your_token_here"; template.header("Authorization", "Bearer " + token); // 如果想要修改URL中的query parameter, 可以这样做: // 假设要给每个GET请求都加上version=1.0这个参数 if ("GET".equalsIgnoreCase(template.method())) { template.query("version", "1.0"); } } } ``` 上述代码片段展示了如何通过实现 `apply()` 方法来自定义请求模板[^2]。在这个方法内部,可以通过调用 `template.header()` 来增加HTTP头;而使用 `template.query()` 则可以在 URL 上追加查询字符串参数。 对于更复杂的场景——例如动态获取令牌或其他依赖于上下文的信息,则可能需要从外部注入相应的服务实例到此组件内以便能够实时取得所需的数据。 当涉及到跨多个微服务共享认证信息时,这种方法特别有用,因为它避免了每次都需要手动传递相同的凭证或者其他重复性的参数[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值