使用FeignClient发送http/https请求,并动态设置请求头

在项目中,常见的发起http/https请求的方式一般是通过「okhttp3.OkHttpClient」,通过显式的拼接url、添加请求头、指定url就可以创建一个Request,然后通过OkHttpClient发起请求。如下

 但是这种方式有问题:

  • url需要仔细拼接,防止url出错
  • 如果有大量的地方有这种业务需求,会导致重复代码太多,并且由于url的拼接规则都不一样,无法将这些重复代码提取出来,造成了项目臃肿。
  • 结构化不清楚

所以可以使用FeignClient,通过定义接口的方式将请求结构化。

  •  先定义一个接口。
  • 添加FeignClinet注解,其中「url」表示请求的基地址,「name」的值就是Spring容器中声明的bean名字。
  • 编写方法。

 该接口的意思是发送「get」请求,并且该请求的请求头是由「@RequestHeader」指定的,「@RequestHeader」中的「authorization」是请求头的名字,之后在调用该方法的时候传入的值作为请求头的值。其他的也类似。

「@GetMapping」中的「consumes」指的是发起请求时的「content-type=application/json」,而「produces」是告诉服务器,我需要接受到的数据格式为application/json,即请求头中的「accept=application/json」。

Post请求:

其实FeignClient的使用方法和正常使用Spring MVC类似。当然,方法的返回值也可以是实体类,FeignClient可以自动封装对象。

常见的问题:

posted @ 2020-10-18 09:56  HMingR  阅读(7525)  评论(0编辑  收藏  举报