今天要给大家介绍的主角是Feign

Feign是一个受到Retrofit,JAXRS-2.0和WebSocket启发的Java到HTTP客户端绑定器。 Feign的第一个目标是降低HTTP API的复杂性。

官网:https://github.com/OpenFeign/feign

1、首先导入maven坐标,我们选择feign-jackson集成jackson解析json。10.X版本需要JDK1.8以上。

<dependency><groupId>io.github.openfeign</groupId><artifactId>feign-jackson</artifactId><version>10.2.3</version>
</dependency>

2、编写接口使用注解来操作Feign如何发送http请求。

public interface LemonAPI {@RequestLine("GET /user/formGet?username={username}&password={password}")String get(@Param("username") String username, @Param("password") String password);
}

3、在main方法中调用Feign.bulider()指定请求uri并且调用接口中的方法,最终在控制台打印结果返回值。

public class App {public static void main(String[] args) {LemonAPI lemonAPI = Feign.builder().target(LemonAPI.class, "http://localhost:8899");String result = lemonAPI.get("abc", "123");System.out.println(result);}
}

在定义接口时,需要使用Feign接口注解定义Http请求类型、请求头、请求体、请求参数等等。

例子1:

//请求方式POST,请求路径/user/formPost
@RequestLine("POST /user/formPost")
//请求头表单提交方式
@Headers("Content-Type: application/x-www-form-urlencoded;charset=UTF-8")
//参数格式name1=value1&name2=value2,参数值由@Param对应提供
@Body("username={username}&password={password}")
String formPost(@Param("username") String username, @Param("password") String password);

例子2:

//请求方式GET 请求路径/user/formGet?name1=value1&name2=value2,参数值由@Param对应提供
@RequestLine("GET /user/formGet?username={username}&password={password}")
String formGet(@Param("username") String username, @Param("password") String password);//请求方式GET 请求路径/find,参数值由@QueryMap 提供,自动添加到uri后面
@RequestLine("GET /find")
String find(@QueryMap Map<String, Object> queryMap);

1、target() 指定接口类型和URL地址返回接口Http代理对象,从而通过代理对象调用方法发送HTTP请求
除了target方法之外,还有一些可选方法。如下:

2、client() Feign 在默认情况下使用的是 JDK 原生的 URLConnection 发送HTTP请求,通过client方法可配置其他HTTP客户端,如HttpClient、OkHttpClient、Http2Client等。

3、options() 指定连接超时时长及响应超时时长,单位毫秒。

4、retryer() 指定重试策略,参数分别是最小时间,最大时间,重连次数。

5、encoder() decoder() 指定编码/解码方式默认是String,可配置Gson、Jackson、Sax等。

6、logger() logLevel() 指定日志和日志等级,可配置SLF4J等。

注意:如果需要使用Jackson、SLF4J、Gson、Sax、OkHttpClient、Http2Client、HttpClient等需要导入对应坐标

例子:

LemonApi lemonApi = Feign.builder()//使用OkHttpClient作为HTTP请求客户端.client(new OkHttpClient())//1000ms连接超时、5000ms响应超时.options(new Options(1000, 5000))//基础重连时间500ms,最大重连时间5000ms,尝试重连次数3次(每次重连时间在基础上*1.5但不能大于最大重连时间).retryer(new  Retryer.Default(500,5000,3))//使用Jackson编码和解码.encoder(new JacksonEncoder()).decoder(new JacksonDecoder())//使用Feign自带日志并输出到项目路径logs/http.log下.logger(new Logger.JavaLogger().appendToFile("logs/http.log"))//日志级别FULL,记录请求和响应所有信息。.logLevel(Logger.Level.FULL)//设置请求URL,对LemonApi接口创建HTTP代理类。.target(LemonApi.class, "http://localhost:8899");
//使用代理类发起HTTP请求
String formGet = lemonApi.formGet("abc", "123");

feign 第一次调用超时_Feign ,3步搞定 HTTP 请求相关推荐

  1. feign 第一次调用超时_feign + hystrix 降级

    feign 启用 hystrix feign 默认没有启用 hystrix,添加配置,启用 hystrix feign.hystrix.enabled=true application.yml 添加配 ...

  2. 两步搞定Hyperledger主打区块链解决方案Fabric

    区块链技术发展至今,形成了公有链和联盟链两种主流技术平台. 公有链 面向大众,用户可以匿名参与,非常方便,账本数据也公开,加上强大的智能合约,因此公有链极大地促进了区块链概念和技术的普及,比如比特币. ...

  3. xbox虚拟服务器,小白玩家看这里!国行Xbox One快速上手攻略 四步搞定

    小白玩家看这里!国行Xbox One快速上手攻略 四步搞定 2014-09-25 10:55:04来源:游戏下载编辑:评论(0) 还有4天时间国行Xbox One就将与大陆玩家见面了,想想还是有点小激 ...

  4. 在线qmc0转换mp3工具_如何将M4A格式的音频转换为MP3格式?只需一步搞定

    随着网络技术的发达,会有很多人喜欢在网上下载东西,特别是很喜欢在网上下载音乐,但是下载音乐之后发现是M4A格式?这样用起来很不方便,都喜欢MP3格式的,那么如何将M4A格式的音频转换为MP3格式?今天 ...

  5. 7步搞定Python数据可视化,业界大牛出品教程,Jupyter、Colab都有在线版

    郭一璞 发自 凹非寺  量子位 报道 | 公众号 QbitAI 做图表,谁不会?打开Excel,自动就可以生成各种各样的图表. 但你看这些图表呢? 结合真实地理数据,展现美国每个县的失业率. 全球自然 ...

  6. Flash Builder4.7极其简单破解方法-三步搞定(亲测)

    资讯类型: 转载 来源页面: http://weibo.com/2101024913/yvmR0D9Df 资讯原标题: 资讯原作者: 丿卓越丶星辰 翻译词数: 词 我的评论: 对这篇文你有啥看法,跟贴 ...

  7. 443 k8s配置开启nginx_SSL证书不会安装配置?手把手教会你,3步搞定

    本文为远怀学堂原创,纯干货分享 我们昨天发布的一篇教程(免费的SSL证书它不香吗?香,真香!)跟大家分享了如何通过阿里云去申请免费的SSL证书,有效期1年,支持个人/企业申请,一个阿里云帐户最多可签发 ...

  8. 轻松几步搞定SSH连接Git配置

    转载自 轻松几步搞定SSH连接Git配置 如果使用ssh的方式管理,需要配置ssh key. 1.打开git bash命令窗口 2.生成ssh key ssh-keygen -t rsa -b 409 ...

  9. 【开源】简单4步搞定QQ登录,无需什么代码功底【无语言界限】

    说17号发超简单的教程就17号,qq核审通过后就封装了这个,现在放出来~~ 这个是我封装的一个开源项目:https://github.com/dunitian/LoTQQLogin --------- ...

最新文章

  1. Nature回应南大花120万发特刊!被骂上热搜,南大到底委不委屈?
  2. 基于OpenCV调整图像的对比度和亮度
  3. 机器人动力学(Basic Newton-Euler Mechanics)
  4. [多图/秒懂]白话OpenPose,最受欢迎的姿态估计网络
  5. mahout贝叶斯算法开发思路(拓展篇)1
  6. 20145307《信息安全系统设计基础》第二周学习总结
  7. 谈谈这一两年的成长 | 读研一年半,靠学习收入四十多万 !
  8. 【5分钟paper】基于近似动态规划的学习、规划和反应的集成架构
  9. 使用Scratch制作打弹球游戏(一)弹球游戏过关
  10. python中append什么意_python里append是什么
  11. 「查看电量」Apple Watch的4种查看电量方法
  12. 阿里云服务器部署app服务器端-流程步骤
  13. 我的所有优质博客全部开源啦(我自己原创的《ACM模板》《算法全家桶》《算法竞赛中的初等数论》 PDF免费下载)
  14. 一刀工具箱-短链接生成工具
  15. 银行欺诈banking fraud
  16. Plugin xxx was was not found in any of the following sources:
  17. 2021/5/16学习总结
  18. 为什么我创建了一个计算机用户名 再打开计算机时 我打不开以前的文件,为什么word文件打不开?Word文档打不开的原因及解决方法...
  19. Abaqus启动失败 FlexNet Licensing error:-7,96
  20. 重大发现:一个免费的CA证书管理中心--EJBCA!!!

热门文章

  1. Argus(ZOJ Problem Set - 2212)(优先队列)
  2. 我对编程中常见名词的理解
  3. PowerPoint2010 中停止使用和修改的功能
  4. 系统中编译安装ZLMediaKit的步骤
  5. Linux查看日志工具
  6. Python id() 函数
  7. Vmware安装与使用
  8. PullToRefreshListView下拉刷新与上拉载入
  9. 2.8加密工具与散列
  10. 关于64位WIN7下正确建立JAVA开发环境(转