微服务:OpenFeign进行服务通讯时携带Token数据

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

一、OpenFeign是什么?

        Feign是Spring Cloud提供的一个声明式的伪Http客户端, 它使得调用远程服务就像调用本地服务 一样简单, 只需要创建一个接口并添加一个注解即可。

        Nacos很好的兼容了Feign,Feign默认集成了 Ribbon, 所以在Nacos下使用Fegin默认就实现了负载均衡的效果。而且是集成的是Ribbon的轮询策略。

二、使用场景

        Figen主要的作用是发送Http请求的,Fiegn中携带Token到另一个服务去,需要配置一个Fegin的配置类完成此操作。

三、使用步骤

1.创建一个FeginClient的配置类

代码如下(示例):

import feign.RequestInterceptor;
import feign.RequestTemplate;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;

/**
 * @author : 胡浩
 * @version 1.0
 * @description: 描述
 * @date 2022/11/15 18:37
 */
@Configuration
public class FeignConfig implements RequestInterceptor {

    @Override
    public void apply(RequestTemplate requestTemplate) {
        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = attributes.getRequest();
        requestTemplate.header("token", request.getHeader("token"));
    }
}

2.在@FeginClient注解中添加Configuration属性

代码如下(示例):

import com.trkj.common.vo.AjaxResponse;
import com.trkj.config.FeignConfig;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

@FeignClient(value = "news-comment",configuration = FeignConfig.class)
public interface CommentService {
    @GetMapping("/comment/lookComment/{newsId}")
    AjaxResponse lookComment(@PathVariable("newsId") Integer newsId);
}

总结

        以上就是OpenFegin在服务之间通讯中,携带token的实现方法了。其实挺简单的,就两步。

最后,欧力给!!!

猜你喜欢

转载自blog.csdn.net/weixin_52797441/article/details/127874306
今日推荐