Об этом проекте
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;
- поддержку выражений шаблонов URI согласно уровню 1 RFC 6570, с ограниченной поддержкой выражений уровня 3 в стиле путей;
- настраиваемые кодировщики и декодировщики для JSON (Gson, Jackson, Moshi, Fastjson2), XML (JAXB, SAX) и SOAP;
- подключаемые внутренние реализации HTTP-клиентов, включая OkHttp, Java 11 HTTP/2 Client и Ribbon для обнаружения сервисов;
- интеграцию с механизмом circuit breaker через Hystrix;
- интеграцию логирования с SLF4J;
- настраиваемые параметры запросов, такие как тайм-ауты подключения и чтения, а также следование перенаправлениям;
- поддержку нескольких целевых интерфейсов с динамическим разрешением URL и оформлением запросов;
- пользовательское расширение параметров через интерфейс Expander.
Feign версии 10.x и выше построен на Java 8 и совместим с Java 9, 10 и 11. Для совместимости с JDK 6 доступна версия Feign 9.x.
Дорожная карта включает запланированные функции: кэширование ответов, полную поддержку выражений шаблонов URI (уровни 1–4), рефакторинг API Logger и Retry, асинхронное выполнение через CompletableFuture, реактивное выполнение через Reactive Streams, а также дополнительную поддержку circuit breaker, например Resilience4J.
Feign доступен в Maven Central под groupId io.github.openfeign. Проект включает примеры клиентов для API GitHub и Wikipedia и интегрируется с проектом Netflix Denominator.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.