本文共 1587 字,大约阅读时间需要 5 分钟。
OpenFeign曾用名Netflix Feign,最新版本是2018.5发布的9.7.0。
OpenFeign是Java应用中编写Web服务的客户端的利器,基于第三方HTTP客户端类库,声明式地构建Web服务的客户端应用,以调用Web服务。OpenFeign在Java应用中,负责处理与远程Web服务的请求响应,最大限度降低编码复杂性。
1. HTTP客户端类库
OpenFeign默认使用Java的HttpURLConnection作为HTTP请求客户端。
OpenFeign也可以使用类似Jersey/CXF的HTTP客户端类库,编写Java客户端以访问HTTP服务。
OpenFeign也可以直接使用已有公共第三方HTTP客户端类库,如Apache HttpComponents, OKHttp,编写Java客户端以访问HTTP服务。
2. JSON编解码类库
OpenFeign可以采用支持Jackson, Gson两种JSON编解码类库,JSON编解码用法如下:Feign.builder().encoder(new GsonEncoder())Feign.builder().decoder(new GsonDecoder())Feign.builder().encoder(new JacksonEncoder())Feign.builder().decoder(new JacksonDecoder())
3. XML编解码类库
OpenFeign支持JAXB规范的XML编解码类库,用法如下:Feign.builder().encoder(new JAXBEncoder())Feign.builder().decoder(new JAXBDecoder())
4. 集成Apache HttpComponents HttpClient
Feign.builder().client(new ApacheHttpClient())
5. 集成OKHttp
Feign.builder().client(new OkHttpClient()).target(...)
6. 集成Ribbon
Feign.builder().client(RibbonClient.create()).target(...)
7. 集成Hystrix
HystrixFeign.builder().target(...)
8. 应用示例
1) 在Java应用中定义远程HTTP服务接口
public interface BaiduService { @RequestLine("GET /{owner}/editors/{lastName}") Listeditors(@Param("owner") String owner, @Param("lastName") String lastName);}
2) 在Java应用中定义对象模型
只需要给出属性
public class Editor { String name;}//a model, no constructor, no getter/setter
3) 在Java应用中定义HTTP服务对象,并发出HTTP请求
BaiduService server = Feign.builder() .decoder(new GsonDecoder()) .target(BaiduService.class, "https://www.baidu.com");ListeditorsHan = server.editors("champagne", "Han");
参考链接:
https://github.com/OpenFeign/feign
转载地址:http://mmlai.baihongyu.com/