使用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可以自动封装对象。
常见的问题:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!