遇到问题
最近遇到一个问题,在微服务调用的过程中,我在用feign调用其他服务的过程中,我需要设置一个header数据,但是不知道怎么设置才正确,这里记录一下。
原问题
我在项目中A服务需要调用ES的数据,这里我们采用feign的接口方式来调用,并且在A服务中我们需要调用B服务,这时候我们也是采用feign的方式来调用,在A服务中新建下面两个feign接口
- 调用ES服务接口
我们这里采用的是
@FeignClient(name = "es",url = "${es.url}", configuration = FeignConfig.class)
来调用,同时基本的请求设置都在FeignConfig.class
这个类中。
在调用方法时候,我们采用
@PostMapping(value= "/{index}/XXX",headers = {"content-type=application/json;charset=UTF-8"})
方式采用设置请求ES的请求头信息,这样我们在请求时候是没有问题的。 - 但是在设置另一个请求时候
使用相同的方法
@PostMapping(value = "/tldp/pageQueryXXX")
@Headers({"Content-Type: application/json","user_id: AAAAAA","end_card: BBBBB"})
JSONObject feignQueryTldp(@RequestBody TldpQueryEntity tldpQueryEntity)
方法一直不行,设置的头部数据一直不生效。后来参考一篇文章
[https://blog.csdn.net/shmily_lsl/article/details/101519273](https://blog.csdn.net/shmily_lsl/article/details/101519273)
将方法改成
@RequestMapping(value = "/tldp/pageQueryXXX",method = RequestMethod.POST, headers = {"Content-Type=application/json","user_id=AAAAAA","end_card=BBBBB"})
JSONObject feignQueryTldp(@RequestBody TldpQueryEntity tldpQueryEntity);
最终解决了问题