Sobre o projeto

Feign é uma biblioteca Java de código aberto que facilita a escrita de clientes HTTP usando uma abordagem declarativa e orientada por anotações. Em vez de construir manualmente requisições HTTP, os desenvolvedores definem uma interface Java com anotações que descrevem o método HTTP, o modelo de URL, cabeçalhos e corpo, e o Feign gera a implementação em tempo de execução. A biblioteca é inspirada nas especificações Retrofit, JAX-RS 2.0 e WebSocket. Seu principal objetivo é reduzir a complexidade de vincular código Java a APIs HTTP de forma uniforme, independentemente de a API seguir convenções REST. Principais recursos incluem: - Definições de interface baseadas em anotações usando @RequestLine, @Param, @Headers, @QueryMap, @HeaderMap e @Body - Suporte a expressões de modelo de URI seguindo RFC 6570 Nível 1, com suporte limitado a expressões de estilo de caminho do Nível 3 - Codificadores e decodificadores personalizáveis para JSON (Gson, Jackson, Moshi, Fastjson2), XML (JAXB, SAX) e SOAP - Backends de cliente HTTP plugáveis, incluindo OkHttp, Cliente HTTP/2 do Java 11 e Ribbon para descoberta de serviços - Integração de disjuntor via Hystrix - Integração de logging com SLF4J - Opções de requisição configuráveis, como timeouts de conexão/leitura e redirecionamento - Suporte a múltiplos alvos de interface com resolução dinâmica de URL e decoração de requisições - Expansão personalizada de parâmetros via interface Expander Feign 10.x e superiores são construídos em Java 8 e compatíveis com Java 9, 10 e 11. Para compatibilidade com JDK 6, a versão Feign 9.x está disponível. O roteiro descreve recursos planejados, incluindo cache de resposta, suporte completo a expressões de modelo de URI (Níveis 1-4), refatorações das APIs de Logger e Retry, execução assíncrona via CompletableFuture, execução reativa via Reactive Streams e suporte adicional a disjuntores, como Resilience4J. Feign está disponível no Maven Central sob o groupId io.github.openfeign. O projeto inclui exemplos de clientes para as APIs GitHub e Wikipedia, e integra-se ao projeto Netflix Denominator.