这个项目能做什么

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 项目集成。