返回顶部
首页 > 资讯 > 后端开发 > Python >Spring 使用 feign时设置header信息的操作
  • 919
分享到

Spring 使用 feign时设置header信息的操作

2024-04-02 19:04:59 919人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

spring feign时设置header信息 最近使用 SpringBoot 项目,把一些 Http 请求转为 使用 feign方式。但是遇到一个问题:个别请求是要设置header

spring feign时设置header信息

最近使用 SpringBoot 项目,把一些 Http 请求转为 使用 feign方式。但是遇到一个问题:个别请求是要设置header的。

于是,查看官方文档和博客,大致推荐两种方式。也可能是我没看明白官方文档。

接口如下:


@FeignClient(url ="XX_url", value ="XXService")
public interface XXService {
 
    @RequestMapping(value ="/xx", method = RequestMethod.POST)
    @Headers({"Content-Type: application/JSON","Accept: application/json"})
    String sendDing(String params);
}

1. 使用Headers注解。直接在请求上或者在类上添加

这种方式经过尝试,没有作用。暂时不清楚原因。

2. 通过实现RequestInterceptor接口,完成对所有的Feign请求,设置Header


@Component
public class FeginClientConfig {
    @Bean
    public RequestInterceptor headerInterceptor() {
        return new RequestInterceptor() {
            @Override
            public void apply(RequestTemplate requestTemplate) {
                    // 小示例,没什么卵用
                    requestTemplate.header("Content-Type","application/json");
            }
        };
    }
 
    @Bean
    public Logger.Level level() {
        return Logger.Level.FULL;
    } 
}

这种方式,是针对所有feign请求进行拦截,设置Header,不适于我的需求。

后来发现其实我的思路走偏了。咨询了一个同事,既然使用的是RequestMapping注解。那么直接使用RequestMapping注解的header属性就可以了。如下:


@RequestMapping(value ="/xx", method = RequestMethod.POST, headers = {"content-type=application/x-www-fORM-urlencoded"})

有一点需要注意:content-type=application/x-www-form-urlencoded。此时,方法里接收的参数,就不能直接是一个对象(Map等)。不然还是会默认

content-type为 application/json.


@RequestMapping(value ="/xx", method = RequestMethod.POST, headers = {"content-type=application/x-www-form-urlencoded"})
String login(@RequestParam("username") String username,@RequestParam("passWord") String password;

Feign动态设置Header

Feign调用接口:



public interface UserInfoFeignClient {

    
    @RequestMapping(value = "/user/info/1.0", method = RequestMethod.POST)
    Object getUserInfoByToken(@RequestParam("token") String token);
}


@Component
public class AuthorityConfig {

    
    public static final String OAUTH_KEY = "token";

    
    public static final String OAUTH_VALUE_PREFIX = "Bearer ";

	// GlobalConstant.AUTHORITY_SERVICE_LINK  : 服务的名称

    @Autowired
    private Client client;

    public UserInfoFeignClient userInfoFeignClient(String token) {
        UserInfoFeignClient authorityServiceLoginInvoker = Feign.builder().client(client)
                .encoder(new GsonEncoder())
                .decoder(new GsonDecoder())
                .contract(new springMVCContract())
                .requestInterceptor(template -> template.header(OAUTH_KEY, OAUTH_VALUE_PREFIX + token))
                .target(UserInfoFeignClient.class, GlobalConstant.AUTHORITY_SERVICE_LINK);
        return authorityServiceLoginInvoker;
    }
}

接口调用:


@Autowired
private AuthorityConfig authorityConfig;


public Object getUserInfo(String token) {
    try {
        Object userInfo = authorityConfig.userInfoFeignClient(token).getUserInfoByToken(token);
        return userInfo;
    } catch (Exception e) {
        log.info("获取用户信息异常", e);
        return null;
    }
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: Spring 使用 feign时设置header信息的操作

本文链接: https://lsjlt.com/news/131802.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Spring 使用 feign时设置header信息的操作
    Spring feign时设置header信息 最近使用 SpringBoot 项目,把一些 http 请求转为 使用 feign方式。但是遇到一个问题:个别请求是要设置header...
    99+
    2024-04-02
  • Spring使用feign时怎么设置header信息
    这篇文章主要介绍“Spring使用feign时怎么设置header信息”,在日常操作中,相信很多人在Spring使用feign时怎么设置header信息问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Sprin...
    99+
    2023-06-20
  • 如何使用Feign动态设置header
    今天小编给大家分享一下如何使用Feign动态设置header的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Feign动态设置...
    99+
    2023-06-29
  • Spring@Value使用获取配置信息为null的操作
    一、项目背景 1、介绍: 最近在springboot项目中需要做一个阿里云OSS图片上传功能点,将OSS图片上传代码提取到公共工具类中,为了方便其他模块调用。 2、问题介绍 在公共工...
    99+
    2024-04-02
  • Feign调用服务时丢失Cookie和Header信息的解决方案
    目录Feign调用服务丢失Cookie和Header信息服务调用方服务接受方Feign调用存在的问题①feign远程调用丢失请求头②异步调用Feign丢失上下文问题Feign调用服务...
    99+
    2024-04-02
  • 使用Feign动态设置header和原理分析
    目录Feign动态设置header和原理例如先说解决办法设置Feign的header信息(两种形式)1.在方法参数前面添加@RequestHeader注解2.实现RequestInt...
    99+
    2024-04-02
  • Spring Cloud Feign 使用对象参数的操作
    目录概述@RequestBody@SpringQueryMapQueryMapEncoder解决方案概述 Spring Cloud Feign 用于微服务的封装,通过接口代理的实现方...
    99+
    2024-04-02
  • SpringBoot 关于Feign的超时时间配置操作
    目录Feign的超时时间配置feign 时间设置Feign调用问题 \ 超时1、项目结构2、在其他微服务中 引入clientXX.jar3、feign调用超时Feign的超时时间配置...
    99+
    2024-04-02
  • 使用Spring Cache设置缓存条件操作
    目录Spring Cache设置缓存条件原理@Cacheable的常用属性及说明Root对象@CachePut的常用属性同@CacheableCache缓存配置1、pom.xml2、...
    99+
    2024-04-02
  • Spring Boot jar 启动时设置环境参数的操作
    Spring Boot jar 启动时设置环境参数 1 摘要 通常在使用 Spring Boot 开发项目时需要设置多环境(测试环境与生产环境等),但是项目打包却只能指定一种环境,有...
    99+
    2024-04-02
  • 使用Feign调用时添加验证信息token到请求头方式
    目录Feign调用添加验证信息token到请求头1、这是最简单的一个方法2、这个方法是网上大多数人的用法3、第三种方法就是大神的方法了Feign中增加请求头最近遇到项目在调用Feig...
    99+
    2024-04-02
  • spring boot 使用profile来分区配置的操作
    spring boot 使用profile来分区配置 很多时候,我们项目在开发环境和生成环境的环境配置是不一样的,例如,数据库配置,在开发的时候,我们一般用测试数据库,而在生产环境的...
    99+
    2024-04-02
  • JAVA使用Ip2region获取IP定位信息的操作方法
    目录先安装依赖下载离线IP定位库下面我们定义类封装ip2region测试输出实际使用ip2region - 准确率99.9%的离线IP地址定位库,0.0x毫秒级查询 ip2regio...
    99+
    2024-04-02
  • 使用Ajax怎么动态显示并操作表信息
    这篇文章将为大家详细讲解有关使用Ajax怎么动态显示并操作表信息,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。js文件内容如下:$(function () { ...
    99+
    2023-06-08
  • TensorFlow和keras中GPU使用的设置操作
    1. 训练运行时候指定GPU 运行时候加一行代码: CUDA_VISIBLE_DEVICES=1 python train.py 2. 运行过程中按需或者定量分配GPU ten...
    99+
    2024-04-02
  • 使用JavaConfig代替xml实现Spring配置操作
    目录JavaConfig代替xml实现Spring配置简单实体类JavaConfig配置类测试类脱离xml用JavaConfig配置Spring情况一情况二JavaConfig代替x...
    99+
    2024-04-02
  • 使用placeholder属性怎么设置input文本框的信息
    今天就跟大家聊聊有关使用placeholder属性怎么设置input文本框的信息,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。带有 placeholder 文本的搜索字段:<f...
    99+
    2023-06-09
  • PHP中的信息格式化操作有什么用
    这篇文章主要讲解了“PHP中的信息格式化操作有什么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP中的信息格式化操作有什么用”吧!在国际化组件的学习过程中,我们已经接触过了Number...
    99+
    2023-06-20
  • 使用spring容器在初始化Bean时前和后的操作
    目录spring容器初始化Bean操作@PostConstruct和@PreDestroy注解在XML中定义init-method和destory-method方法Bean实现Ini...
    99+
    2024-04-02
  • 在spring时使用RedisTemplate如何实现连接并操作Redis
    在spring时使用RedisTemplate如何实现连接并操作Redis?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。事务需要开启enableTransact...
    99+
    2023-05-31
    spring redistemplate redis
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作