当前位置: 首页 > news >正文

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);// 打印对方返回值
http://www.cnnetsun.cn/news/4008621.html

相关文章:

  • 甘肃省住房城乡建设部网站怎么样?深度解析查询流程与避坑指南
  • 深入解读柳州市城乡建设局网站功能与服务指南如何高效利用官方平台
  • CODESYS V3项目实战:从传送带分拣案例掌握PLC工程化编程
  • 揭秘合肥的网站建设剂屏背后那些不为人知的细节与真相
  • 揭秘企业网站建设物美价廉的真相与避坑指南,中小企业主必读
  • jsp网站建设作业怎么做?资深开发者揭秘从零基础到实战落地的全流程避坑指南
  • 2024学校网站建设计划:打造智能化教育新窗口的实战指南与关键策略
  • 深耕社区金融血脉,探寻上海建设银行青浦分行网站背后的服务温度与数字化智慧
  • 企业建站必问:网站建设空间一般多大?揭秘服务器配置背后的真相与陷阱
  • JSONSchema.Net安全实践:保护你的API数据验证流程
  • 小型玩具企业网站建设初期阶段任务规划与落地执行指南
  • 石家庄网站建设德信互联科技有限公司 如何从细节出发打造真正懂业务的企业官网
  • 前端多会话架构设计:基于状态隔离与生命周期管理的实践指南
  • 为什么网站建设公司固定ip是专业选择的必选项?揭秘背后的商业逻辑与技术真相
  • 寻找网站建设推广:从零基础到业务翻倍的实战避坑指南与深度解析
  • 深度解析国家建设部网站平台功能、用户反馈及未来趋势全面指南
  • Candle:为什么这款开源GRBL控制器能让你的CNC加工事半功倍?
  • 揭秘深圳自适应网站建设价格:2024年真实成本大起底与避坑指南
  • 深入了解建站平台和网站建设的区别,如何选择最适合你的网站方案
  • 成都网站建设询q479185700上快
  • 长春网站建设推荐网诚传媒深度解析企业数字化转型的破局之道
  • 为什么我在哈尔滨做网站建设要死磕细节以及哈尔滨网站建设1的本土化思考
  • 揭秘东莞网站建设背后的匠心:如何用木质家居的设计理念与硬核技术支持重塑品牌温度
  • 3步掌握HPD-Parsing:从安装部署到生产评估的完整实战指南
  • 惠州网站建设学校深度解析:为何本地学子纷纷选择在此开启数字创业第一步
  • Xilinx HLS开发实战:从C/C++算法到高性能FPGA硬件的核心指南
  • 如何打造高效能的协会官方网站:一份详尽的协会网站建设方案书指南
  • 企业网站建设差打不开?别再让破网站毁掉你的百万生意!揭秘网站打不开背后的真相与自救指南
  • 揭秘佛山正规网站建设哪家好?老板别再被坑,这份避坑指南让你省下一半预算
  • OM-036 台式频谱分析仪在煤矿能源电磁信号监测中的应用探究