这个项目能做什么
Feign 是一个开源 Java 库,通过声明式、注解驱动的方法简化了 HTTP 客户端的编写。开发者无需手动构造 HTTP 请求,而是定义一个带有注解的 Java 接口,描述 HTTP 方法、URL 模板、请求头和请求体,Feign 会在运行时生成实现。
该库灵感源自 Retrofit、JAX-RS 2.0 和 WebSocket 规范。其主要目标是降低将 Java 代码绑定到 HTTP API 的复杂性,使其统一化,无论 API 是否遵循 REST 约定。
主要特性包括:
- 基于注解的接口定义,使用 @RequestLine、@Param、@Headers、@QueryMap、@HeaderMap 和 @Body
- 支持遵循 RFC 6570 级别 1 的 URI 模板表达式,并有限支持级别 3 的路径风格表达式
- 可自定义的编码器和解码器,支持 JSON(Gson、Jackson、Moshi、Fastjson2)、XML(JAXB、SAX)和 SOAP
- 可插拔的 HTTP 客户端后端,包括 OkHttp、Java 11 HTTP/2 客户端,以及用于服务发现的 Ribbon
- 通过 Hystrix 集成熔断器
- 与 SLF4J 的日志集成
- 可配置的请求选项,如连接/读取超时和重定向跟随
- 支持多个接口目标,具有动态 URL 解析和请求装饰功能
- 通过 Expander 接口支持自定义参数扩展
Feign 10.x 及以上版本基于 Java 8 构建,兼容 Java 9、10 和 11。对于 JDK 6 兼容性,可使用 Feign 9.x 版本。
路线图概述了计划中的功能,包括响应缓存、完整 URI 模板表达式支持(级别 1-4)、Logger 和 Retry API 重构、通过 CompletableFuture 实现的异步执行、通过 Reactive Streams 实现的响应式执行,以及额外的熔断器支持(如 Resilience4J)。
Feign 可在 Maven Central 上以 io.github.openfeign groupId 获取。该项目包含 GitHub 和 Wikipedia API 的示例客户端,并与 Netflix Denominator 项目集成。
评论
0 评分人数达到10人后显示
登录后参与讨论。