使用OpenFeign实现远程HTTP调用
11212144
常见HTTP客户端有哪些?
问:HTTP是个网络协议,具体指的是什么协议?在什么情况下用的?
问:http和https有什么区别?
常见HTTP客户端有如下四个:
HttpClient 可以配置线程池
Okhttp 可以配置线程池
HttpURLConnection 单线程的
RestTemplate
问:什么是http客户端?
HTTP 介绍_http客户端_cuckoo_yang的博客-CSDN博客
问:什么是超文本?
超文本(Hypertext) - 知乎 (zhihu.com)
二、OpenFeign的组成
三、细粒度配置自定义
代码方式-指定日志级别
属性方式-指定日志级别
找到哪个函数,写一些什么语句?
四、全局配置自定义
使用属性指定日志级别
feign:client:config:default:loggerLevel:full
五、支持的配置项
1、契约配置
public Contract feignContract(){
return new SpringMvcContract();
}
2、编解码
3、拦截器
创建了一个拦截器,继承HandlerIntercepter 重写preHandle方法
下面还需要将它配置上去
怎么配置?直接在配置文件里增加属性配置?还是需要写一个配置类?需要写一个类,告诉框架用这个拦截器
写一个类,类里面继承WebMvcConfigurationSupport,重写addInterceptors方法
4、Client设置
首先集成HttpClient,??为什么要集成?本来的框架里面没有么?
怎么集成?
第一步 引入相应依赖
第二步 配置相应注解
问:怎么确定在发请求的时候用的是httpClient?
打一个断点,运行后确实到这里来了
如果没有自定义配置,那么框架里边原始的client,会运行这些代码。默认用的JDK
使用okhttp
第一步 引入依赖
第二步 修改属性
okhttp:enabled:true
五、配置超时时间 request.Options(){}
六、推荐配置方式
尽量使用属性配置,属性方式实现不了的情况下再考虑代码配置
一般配置日志和超时时间,用属性配置,contract一般不会动,很麻烦
同一微服务尽量保持单一,统一属性配置,或代码配置。不要混用,会增加定位代码的复杂性
七、源码分析
第一步 createContext
第二步
11221621
名称是map里的key,,通过名称获得上下文,进行请求就行