عن المشروع
Feign هي مكتبة Java مفتوحة المصدر تسهل كتابة عملاء HTTP باستخدام نهج تعريفي يعتمد على التعليقات التوضيحية. بدلاً من بناء طلبات HTTP يدويًا، يقوم المطورون بتعريف واجهة Java مع تعليقات توضح طريقة HTTP، قالب URL، الترويسات، والجسم، ويقوم Feign بتوليد التنفيذ في وقت التشغيل.
المكتبة مستوحاة من Retrofit وJAX-RS 2.0 ومواصفات WebSocket. هدفها الأساسي هو تقليل تعقيد ربط كود Java بواجهات HTTP بشكل موحد، بغض النظر عما إذا كانت الواجهة تتبع اتفاقيات REST.
الميزات الرئيسية تشمل:
- تعريفات واجهة قائمة على التعليقات التوضيحية باستخدام @RequestLine و@Param و@Headers و@QueryMap و@HeaderMap و@Body
- دعم تعبيرات قالب URI وفقًا لمعيار RFC 6570 المستوى 1، مع دعم محدود لتعبيرات النمط المساري من المستوى 3
- ترميز وفك ترميز قابل للتخصيص لـ JSON (Gson وJackson وMoshi وFastjson2) وXML (JAXB وSAX) وSOAP
- خلفيات عميل HTTP قابلة للتوصيل تشمل OkHttp وJava 11 HTTP/2 Client وRibbon لاكتشاف الخدمات
- تكامل قاطع الدائرة عبر Hystrix
- تكامل التسجيل مع SLF4J
- خيارات طلب قابلة للتكوين مثل مهلات الاتصال/القراءة ومتابعة إعادة التوجيه
- دعم أهداف واجهات متعددة مع حل URL ديناميكي وتزيين الطلبات
- توسيع معلمات مخصص عبر واجهة Expander
Feign 10.x وما فوق مبني على Java 8 ومتوافق مع Java 9 و10 و11. للتوافق مع JDK 6، يتوفر Feign 9.x.
الخارطة الزمنية تحدد الميزات المخطط لها بما في ذلك تخزين الاستجابات مؤقتًا، دعم كامل لتعبيرات قالب URI (المستويات 1-4)، إعادة هيكلة واجهات Logger وRetry، تنفيذ غير متزامن عبر CompletableFuture، تنفيذ تفاعلي عبر Reactive Streams، ودعم إضافي لقواطع الدائرة مثل Resilience4J.
Feign متاح على Maven Central تحت groupId io.github.openfeign. يتضمن المشروع أمثلة عملاء لواجهات GitHub وWikipedia، ويتكامل مع مشروع Netflix Denominator.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.