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


  1. 在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


  1. 在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"));
    }
}

以上是三种常用的方式,根据具体的需求选择适合的方式即可。

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您可以使用Feign来进行远程调用,并设置请求头。要进行团购请求,您可以按照以下步骤操作: 1. 首先,在您的项目中添加Feign依赖。可以在Maven或Gradle配置文件中添加以下依赖: ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> ``` 2. 创建一个Feign客户端接口,用于定义远程调用的方法。在该接口中,使用`@RequestMapping`注解定义远程服务的URL和请求方式,同时可以使用`@RequestHeader`注解设置请求头。 ```java @FeignClient(name = "团购服务", url = "http://团购服务的URL") public interface GroupBuyClient { @RequestMapping(method = RequestMethod.GET, value = "/groupbuy") String getGroupBuyInfo(@RequestHeader("Authorization") String token); } ``` 3. 在您的业务逻辑中,使用该Feign客户端接口进行远程调用Feign会自动处理请求和响应。 ```java @Autowired private GroupBuyClient groupBuyClient; public void performGroupBuyRequest() { String token = "your_token"; String groupBuyInfo = groupBuyClient.getGroupBuyInfo(token); // 处理响应结果 } ``` 在上述代码中,`getGroupBuyInfo`方法定义了一个GET请求,其中`@RequestHeader("Authorization")`注解设置了请求头的Authorization字段。您可以根据实际情况自定义请求头的内容。 请注意,上述代码仅为示例,实际使用时需要根据您的项目和接口定义进行相应的修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值