À propos du projet

Feign est une bibliothèque Java open-source qui facilite l'écriture de clients HTTP en utilisant une approche déclarative pilotée par annotations. Au lieu de construire manuellement des requêtes HTTP, les développeurs définissent une interface Java avec des annotations qui décrivent la méthode HTTP, le modèle d'URL, les en-têtes et le corps, et Feign génère l'implémentation à l'exécution. La bibliothèque est inspirée des spécifications Retrofit, JAX-RS 2.0 et WebSocket. Son objectif principal est de réduire la complexité de la liaison du code Java aux API HTTP de manière uniforme, indépendamment du fait que l'API suive ou non les conventions REST. Les fonctionnalités clés incluent : - Définitions d'interface basées sur des annotations utilisant @RequestLine, @Param, @Headers, @QueryMap, @HeaderMap et @Body - Prise en charge des expressions de modèle d'URI conformément à la RFC 6570 Niveau 1, avec une prise en charge limitée des expressions de style chemin de Niveau 3 - Encodeurs et décodeurs personnalisables pour JSON (Gson, Jackson, Moshi, Fastjson2), XML (JAXB, SAX) et SOAP - Backends clients HTTP enfichables incluant OkHttp, le client HTTP/2 Java 11 et Ribbon pour la découverte de services - Intégration du disjoncteur via Hystrix - Intégration de la journalisation avec SLF4J - Options de requête configurables telles que les délais d'attente de connexion/lecture et le suivi des redirections - Prise en charge de plusieurs cibles d'interface avec résolution d'URL dynamique et décoration de requêtes - Expansion de paramètres personnalisée via l'interface Expander Feign 10.x et versions ultérieures sont construits sur Java 8 et compatibles avec Java 9, 10 et 11. Pour la compatibilité JDK 6, Feign 9.x est disponible. La feuille de route décrit les fonctionnalités prévues, notamment la mise en cache des réponses, la prise en charge complète des expressions de modèle d'URI (Niveaux 1 à 4), les refontes des API Logger et Retry, l'exécution asynchrone via CompletableFuture, l'exécution réactive via Reactive Streams et une prise en charge supplémentaire des disjoncteurs telle que Resilience4J. Feign est disponible sur Maven Central sous le groupId io.github.openfeign. Le projet inclut des exemples de clients pour les API GitHub et Wikipedia, et s'intègre au projet Netflix Denominator.