news 2026/8/13 21:57:57

Spring-cloud-openfeign-Main方法调用原生API发送HTTP请求

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Spring-cloud-openfeign-Main方法调用原生API发送HTTP请求

本文的内容适用于

  1. 公司网络有问题或者同事环境有问题,不能通过@FeignClient注解使用feign的情况
  2. 不喜欢okhttp或者apache client或者java原生io或者其他http工具

步骤

  • GET请求
  • POST请求

GET请求

  1. 依旧定义feign接口,但是并没有使用@FeignClient注解
importfeign.Body;importfeign.HeaderMap;importfeign.Param;importfeign.RequestLine;importjava.util.Map;publicinterface MyFeign{// 根据人员id查询人员详情@RequestLine("GET /user/detail?id={userId}")StringgetUserDetail(@Param("userId")String userId,@HeaderMap Map<String,String>headers);}
@RequestLine:feign固定写法 GET:feign固定写法,表示发送GET请求 /user/detail:我要调用的接口路径(servlet path) {userId}:双侧大括号为feign约定写法,表示大括号内的词,一定在方法入参中存在,feign会从方法入参中取该值,然后替换掉{userId} @Param("userId"):feign约定写法,同上,一定是和双侧大括号一一对应的 @HeaderMap:Http请求头,如果不需要删掉headers参数就行
  1. main方法直接发送上述get请求
MyFeign feignClient=Feign.builder().target(MyFeign.class,"https://对方域名");String result=feignClient.getUserDetail("123",newHashMap<>());System.out.println(result);// 打印对方返回值

POST请求

  1. 定义feign接口,但是并没有使用@FeignClient注解
publicinterface MyFeign{// 根据人员id查询人员详情@RequestLine("POST /user/detail")@Body("{body}")StringgetUserDetail(@Param(value="body",expander=MediaTypeByJsonExpander.class)User user,@HeaderMap Map<String,String>headers);}
@RequestLine:feign固定写法 POST:feign固定写法,表示发送POST请求 /user/detail:我要调用的接口路径(servlet path) @Body("{body}") 双侧大括号为feign约定写法,表示大括号内的词,一定在方法入参中存在,feign会从方法入参中取该值,然后替换掉{body} value = "body":表示将user赋值到{body}中,但是怎么赋值,由expander决定 expander = MediaTypeByJsonExpander.class:因为http请求body不能是对象,所以expander就是用来处理如何将user对象转换成字符串,后文有介绍 @HeaderMap:Http请求头,如果不需要删掉headers参数就行
  1. 定义expander
importcom.alibaba.fastjson.JSON;importfeign.Param;publicclassMediaTypeByJsonExpanderimplements Param.Expander{// 媒体类型为application/json的post请求现在最常用,// 所以这里假设只处理json数据,value是上述接口// getUserDetail的user入参,这里相当于把user转换成json字符串@OverridepublicStringexpand(Object value){returnJSON.toJSONString(value);}}
  1. 发送POST请求(同GET请求)
MyFeign feignClient=Feign.builder().target(MyFeign.class,"https://对方域名");User user=newUser();user.setId("123");String result=feignClient.getUserDetail(user,newHashMap<>());System.out.println(result);// 打印对方返回值
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/13 21:57:31

甘肃省住房城乡建设部网站怎么样?深度解析查询流程与避坑指南

在这个数字化飞速发展的时代,无论是对于从事建筑行业的专业人士,还是那些正忙着装修新房的普通百姓,亦或是准备考一级建造师、二级建造师的建筑人,获取官方、准确、及时的政策信息和生活便利服务,变得越来越重要。而在这其中,“甘肃省住房城乡建设部网站”这个关键词,常…

作者头像 李华
网站建设 2026/8/13 21:56:38

深入解读柳州市城乡建设局网站功能与服务指南如何高效利用官方平台

在当今这个信息爆炸的时代,作为一名普通的柳州市民,或者是那些怀揣着梦想来到这座城市打拼的外乡人,我们对于“家”的概念,往往不仅仅局限于那几十平米的房子,更延伸到了周边的居住环境、社区配套以及城市的整体面貌。而当你想要深入了解我们脚下的这片土地,想要知道未来…

作者头像 李华
网站建设 2026/8/13 21:56:04

CODESYS V3项目实战:从传送带分拣案例掌握PLC工程化编程

1. 从“Hello World”到项目实战&#xff1a;CODESYS V3编程进阶之路 上次我们聊了CODESYS V3的基础安装和界面&#xff0c;算是把厨房和锅碗瓢盆都准备好了。今天&#xff0c;咱们直接开火&#xff0c;炒几个硬菜。很多朋友学PLC编程&#xff0c;卡就卡在从“点动一个灯”到“…

作者头像 李华
网站建设 2026/8/13 21:55:50

揭秘合肥的网站建设剂屏背后那些不为人知的细节与真相

在这个数字化浪潮席卷而来的时代,每一个企业,无论大小,仿佛都站在了一个十字路口。左边的路叫“传统坚守”,右边这条宽阔大路则被一块巨大的霓虹灯招牌照亮,上面写着“数字转型”。对于身处合肥这座新一线城市的老板们来说,这块招牌上的“数字转型”往往最先具象化为两个…

作者头像 李华
网站建设 2026/8/13 21:54:16

揭秘企业网站建设物美价廉的真相与避坑指南,中小企业主必读

在这个数字化浪潮席卷一切的今天,很多老板、初创者甚至是中小微企业的负责人,坐在办公室里看着手机里那些花花绿绿的广告弹窗,心里难免会打鼓:我的网站什么时候能搞起来?毕竟,现在是个企业就得有个官网,这仿佛成了商业世界的“默认配置”。但是,当真正开始询价的时候,…

作者头像 李华
网站建设 2026/8/13 21:53:46

jsp网站建设作业怎么做?资深开发者揭秘从零基础到实战落地的全流程避坑指南

说实话,当我第一次看到老师布置的“jsp网站建设作业”这个题目时,我的内心是崩溃的。毕竟在如今这个Vue、React、React Native甚至各种低代码平台泛滥的时代,JSP这种老牌技术似乎已经退居幕后,被更多人遗忘在角落。但对于很多计算机专业的学生来说,这依然是一道绕不过去的…

作者头像 李华