Java应用与HTTP服务之间的粘合剂OpenFeign详解

OpenFeign(前身为Netflix Feign)9.7.0版本详细指南,它作为Java客户端,简化了Web服务的调用。支持HttpURLConnection,Jersey,CXF等HTTP客户端,以及Jackson,Gson的JSON编解码,JAXB的XML编解码。可集成Apache HttpClient,OKHttp,Ribbon和Hystrix。示例展示了如何定义接口,对象模型并发起HTTP请求。

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}")
	List<Editor> editors(@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");
List<Editor> editorsHan = server.editors("champagne", "Han");

 

参考链接:

https://github.com/OpenFeign/feign

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值