SpringCloud动态设置headers

SpringCloud动态设置headers,第1张

一、原因

在通过 Feign 进行服务调用的过程中,我们需要将用户的 token、lang 等信息放入请求 header 中。

在这个过程中,我们需要继续将用户请求头中的数据保持传递,方便底层服务获取用户登陆状态, 本地化参数等数据。

比如:现在做的项目,采用mybatis租户隔离的方式进行搭建;通过nginx给不同的域名加上xtenant,域名访问的时候会有xtenant,但是如果直接通过微服务进行调用的话,请求不回经过nginx,这样就不会在headers上加入xtenant,导致租户隔离有问题;

二、解决方案

通过入参的方式,设置headers,这样只要给feign调用的接口,增加一个入参,就能解决租户隔离问题。

@FeignClient(value = "rent", fallbackFactory = RentCloudFallbackFactory.class)
public interface RentCloudService {
    @RequestMapping(value = "/api/getUserOrderCount/v1", method = RequestMethod.GET)
    Result<RentOrderNumVO> getUserOrderCount(@RequestParam("userId") Integer userId, 
    @RequestHeader("xtenant") Long xtenant);
}

通过这种解决方案,不用改服务实现的接口调用,因为你不知道,这个接口到底有多少服务接口在调用,你只要在相应的需要调用的地方,传入headers参数,就完美解决问题。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/724269.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存