最近使用 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;

  

Spring 使用 feign时设置header信息的更多相关文章

  1. 爬虫时伪装header信息

    在爬虫时,一般需要伪装Agent信息,放在header中 1.header不是必传参数,在需要的时候进行伪装 2.header = {"User-Agent": "Moz ...

  2. httpclient发送request请求时设置header和timeout

    package com.xxx.xxx.common; import java.io.BufferedReader; import java.io.InputStreamReader; import ...

  3. HttpClient3.1设置header信息

    HttpClient client = new HttpClient(); GetMethod get = new GetMethod(URL); get.setRequestHeader(" ...

  4. RestTemplate发送请求并携带header信息

    1.使用restTemplate的postForObject方法 注:目前没有发现发送携带header信息的getForObject方法. HttpHeaders headers = new Http ...

  5. RestTemplate发送请求并携带header信息 RestTemplate post json格式带header信息

    原文地址:  http://www.cnblogs.com/hujunzheng/p/6018505.html RestTemplate发送请求并携带header信息   v1.使用restTempl ...

  6. spring boot 并发请求,其他系统接口,丢失request的header信息【多线程、线程池、@Async 】

    场景:一次迭代在灰度环境发版时,测试反馈说我开发的那个功能,查询接口有部分字段数据是空的,后续排查日志,发现日志如下: feign.RetryableException: cannot retry d ...

  7. spring boot:用cookie保存i18n信息避免每次请求时传递参数(spring boot 2.3.3)

    一,用cookie保存i18n信息的优点? 当开发一个web项目(非api站)时,如果把i18n的选择信息保存到cookie, 则不需要在每次发送请求时都传递所选择语言的参数, 也不需要增加heade ...

  8. 转 jquery怎么在header中设置请求信息

    jquery是js的类库,js本身不能操作header,因为js是在浏览器加载页面过程中才开始执行的 header需要服务器端执行操作 如果是ajax,是可以设置header $.ajax({ url ...

  9. js ajax设置和获取自定义header信息的方法总结

    目录 1.js ajax 设置自定义header 1.1 方法一: 1.2 方法二: 2.js ajax 获取请求返回的response的header信息 3.js ajax 跨域请求的情况下获取自定 ...

随机推荐

  1. Kubernetes之存储

    存储卷概述 容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应用时会出现一些问题.首先,当容器崩溃时,kubelet 会重启它,但是容器中的文件将丢失——容器以干净的状态(镜像最初的状态) ...

  2. tensorflow tensor Flatten 张量扁平化,多通道转单通道数据

    slim.flatten(inputs,outputs_collections=None,scope=None) (注:import tensorflow.contrib.slim as slim)  ...

  3. Groovy 设计模式 -- 组合模式

    Composite Pattern http://groovy-lang.org/design-patterns.html#_chain_of_responsibility_pattern 组合模式, ...

  4. SSRF漏洞挖掘经验

    SSRF概述 SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞.一般情况下,SSRF攻击的目标是从外网无法访问 ...

  5. bilibili存储型xss (绕过长度限制打乱顺序限制)

    在个人空间的我的收藏中可编辑视频收藏的名称,之后尝试写入标签. http://space.bilibili.com/ 发现输出到前端的尖括号被转义了,不过出现了一个json接口,他的Content-T ...

  6. sort与uniq命令详解

    1.sort的作用 (排序) sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出. 如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行 ...

  7. Go 环境配置

    1.下载SDK 官网:https://golang.google.cn/ go中文在线文档:https://studygolang.com/pkgdoc 2.配置环境变量 windows使用.msi一 ...

  8. django的一些常用指令

    生成Django项目 django-admin startproject mysite 启动服务 python manage.py runserver 本地化中间件 'django.mididdlew ...

  9. DQL、DML、DDL、DCL区别

    DQL(data query language)数据查询语言 主要是由SELECT构成的查询语句 基本语法:select 字段名 from 表名 where 查询条件 DML(data manipul ...

  10. 【转】解决keepalived正常启动但是虚IP(VIP)没有生成的问题

    如题所示,keepalived安装配置好之后能够正常启动,但是虚IP并没有生成.接着检查防火墙(iptables)发现也没有相关的限制.稍微郁闷了一下之后,查看了keepalived日志文件,这次成功 ...