FeignClient设置请求头信息

  • 1. FeignClient概述
  • 2. FeignClient设置请求头信息
    • 2.1 实现方式一
    • 2.2 实现方式二

1. FeignClient概述

这里所说的Feign都是指Open Feign,因为Netflix的Feign已经停更了,那什么是Feign,借用官网一句话就是,“Feign is a declarative web service client.” ,Feign就是一个声明试web service客户端。

具体详细说明详见官方文档:https://docs.spring.io/spring-cloud-openfeign/docs/current/reference/html/

Feign主要实现客户端负载均衡与远程调用的作用,OpenFeign实在Feign基础上再次封装,Feign集成了Ribbon,在OpenFeign之前采用Ribbon+RestTemplate方式实现负载均衡与远程调用,而OpenFeign则集成了这两者,所以OpenFeign就是Ribbon+RestTemplate。

实现客户端调用方式有很多hutool的httpclient,直接使用httpclient,也包括FeignClient,在客户端端调用过程中不同业务场景及不同系统调用方式不同,有时候需要设置不同的头信息。

2. FeignClient设置请求头信息

2.1 实现方式一

直接写在方法请求注解PostMapping上:

@PostMapping(headers = {"AccessKey=xxxxxx"})
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;import java.net.URI;
import java.util.LinkedHashMap;/*** 平台接口** @author zrj* @since 2021/8/2**/
@Service("SearchService")
@FeignClient(url = "https://hello.com/search-api/", name = "SearchService")
public interface SearchPlatformService {/*** 新增数据*/@PostMapping(headers = {"AccessKey=xxxxxxxx"})LinkedHashMap insertDoc(URI uri, @RequestBody LinkedHashMap linkedHashMap);/*** 搜索数据*/@PostMapping(headers = {"AccessKey=xxxxxxxx"})LinkedHashMap selectDoc(URI uri, @RequestBody LinkedHashMap linkedHashMap);}

2.2 实现方式二

通过Feign配置类feign configuration 实现全局的请求头和 token设置,相当于每次feign请求都会自动带上这些头信息。

/*** 客户端设置头信息** @author zrj* @since 2021/11/11**/
@Slf4j
@Configuration
public class ClientConfiguration {@Value("${hello.search.headers}")private String headers;@Beanpublic RequestInterceptor headerInterceptor() {return new RequestInterceptor() {@Overridepublic void apply(RequestTemplate template) {              //List<String> authorizationList = Lists.newArrayList("Bearer "+tokenId);//List<String> contentTypeList = Lists.newArrayList("application/x-www-form-urlencoded;charset=utf-8");//Map<String, Collection<String>> headers =ImmutableMap.of("Authorization", authorizationList,"Content-Type", contentTypeList);//template.headers(headers);template.header("AccessKey", headers);}};}
}/*** 搜索平台接口** @author zrj* @since 2021/8/2**/
@Service("SearchService")
@FeignClient(url = "https://hello.com/search-api/", name = "SearchService")
public interface SearchPlatformService {/*** 新增数据*/@PostMappingLinkedHashMap insertDemo(URI uri, @RequestBody LinkedHashMap linkedHashMap);/*** 搜索数据*/@PostMappingLinkedHashMap selectDemo(URI uri, @RequestBody LinkedHashMap linkedHashMap);}

参考文档
微服务 springcloud Feign详解
Feign client 设置请求头信息

FeignClient设置请求头信息相关推荐

  1. restTemplate请求设置请求头信息

    //设置请求头信息 HttpHeaders httpHeaders=new HttpHeaders(); //发送请求头格式 为json/编码为utf-8 httpHeaders.setContent ...

  2. Ajax学习:Ajax设置请求头信息

    在前面的学习中: 请求报文的:请求行可以设置,请求体可以设置 下面是设置请求头信息 响应头的位置在: <script>//获取元素对象const result = document.get ...

  3. html 设置请求头,【万能框架教程】 - 如何设置请求头信息(Header)-HttpHelper爬虫框架-苏飞论坛...

    "无法直接修改标题"Host".\r\n参数名: name" 我设置Header出现上面错误 Host: cn.investing.com User-Agent ...

  4. 爬虫实战学习笔记_2 网络请求urllib模块+设置请求头+Cookie+模拟登陆

    1 urllib模块 1.1 urllib模块简介 Python3中将urib与urllib2模块的功能组合,并且命名为urllib.Python3中的urllib模块中包含多个功能的子模块,具体内容 ...

  5. 阿里云OSS上传文件设置请求头

    之前写过一篇发送文件消息的,原生input上传文件(聊天发送文件消息),这次的需求就是更改上传地址,使用阿里云OSS上传. 如果想了解阿里云对象存储OSS是如何使用的,请看阿里云存储对象OSS使用讲解 ...

  6. php 设置http 请求头信息,php设置http头

    朋友忽然提了个问题,说自己模拟请求发送的时候和在浏览器中直接访问返回的字符串不一样,我猜应该是http头的问题,在浏览器中复制出来请求头信息,模拟和浏览器请求头一样的信息发送过去,问题解决. $hea ...

  7. php设置http请求头信息和响应头信息

    php设置http请求头信息和响应头信息 设置请求服务器的头信息可以用fsockopen,curl组件,header函数只能用来设置客户端响应的头信息,不能设置服务器的头信息. 例子; 一.heade ...

  8. Feign传递请求头信息

    在我之前的文章服务网关Spring Cloud Zuul中,将用户的登录id放在了请求头中传递给内部服务.但是当内部服务之间存在feign调用时,那么请求头信息会在feign请求的时候传递吗?不会,请 ...

  9. request设置请求头_收藏 Scrapy框架各组件详细设置

    今天说一下Scrapy框架各组件的详细设置. 关于Scrapy Scrapy是纯Python语言实现的爬虫框架,简单.易用.拓展性高是其主要特点.这里不过多介绍Scrapy的基本知识点,主要针对其高拓 ...

最新文章

  1. 现实工程中常用到的C语言函数总结(不断更新)
  2. MATLAB支持向量机SVM代码实现
  3. js三元运算符_这些优化技巧可以避免我们在 JS 中过多的使用 IF 语句
  4. ie浏览器不支持多行隐藏显示省略号
  5. HTML5实现刮奖效果
  6. Windows/Android/IOS平台如何在Unity3d播放RTSP/RTMP流
  7. 【OpenGL】Shader技巧集合
  8. 《游戏编程模式》一7.5 状态对象应该放在哪里呢
  9. php部分---单文件上传的封装类
  10. 在IDEA中实现Python随机森林模型预测人口
  11. QRCode二维码与PDF417码生成与读取JAVA+HTML
  12. 用什么 软件测试无线频段,Wirelessmon无线频段与信号强度扫描工具软件使用技巧...
  13. 域名申请(注册)的流程
  14. 大数据分析技术与应用
  15. 普通年金终值和现值计算(白话版)
  16. vue3代码检查以及格式化配置
  17. Snipaste截图时下拉菜单消失解决方法
  18. “由于无法验证发行者,所以WINDOWS已经阻止此软件”的解决方法
  19. Base 64 编码
  20. KNN算法和sklearn中的KNN算法

热门文章

  1. Sam Schwartz规划咨询公司交通出行研究两则
  2. 网站克隆器神器AWWWB.COM
  3. 高压电源模块12V升110V/150V/250V/350V稳压直流电源
  4. 一个IO口控制多个按键方法
  5. 2017滴滴出行实习面试总结(测试岗,拿到offer)
  6. 红米k40和红米k40pro 哪个好 红米k40和红米k40pro区别
  7. 什么是 Fat/Shade/Shadow Jar
  8. 微信小程序 运行报错已被代码依赖分析忽略
  9. 基于SpringBoot+vue的网上图书商城系统设计和实现
  10. GAN原理总结以及对比