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.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.