إطار عمل مفتوح لتجميع بوابات واجهة برمجة تطبيقات الأداء الفائق مع الأوساط المتوسطة ؛ المعروف سابقًا باسم Krakend Framework ، والخدمة الأساسية لبوابة Krakend API.
مستهلكي محتوى API REST (خاصة في الخدمات الدقيقة) في كثير من الأحيان يستعدون عن خدمات الواجهة الخلفية التي لم يتم ترميزها لتطبيق واجهة المستخدم. هذه بالطبع ممارسة جيدة ، لكن مستهلكي واجهة المستخدم يحتاجون إلى القيام بالتطبيقات التي تعاني من الكثير من التعقيد والعبء مع أحجام استجابات الخدمات المجهرية الخاصة بهم.
Lura هو منشئ بوابة API ومولد وكيل يجلس بين العميل وجميع خوادم المصدر ، مضيفًا طبقة جديدة تزيل كل التعقيد للعملاء ، مما يوفر لهم فقط المعلومات التي تحتاجها واجهة المستخدم. تعمل Lura كمجمع للعديد من المصادر في نقاط نهاية واحدة وتتيح لك تجميع الاستجابات واللف وتحويل وتقليص. بالإضافة إلى ذلك ، فإنه يدعم عدد لا يحصى من الأوساط والمكونات الإضافية التي تسمح لك بتوسيع الوظائف ، مثل إضافة ترخيص OAUTH أو طبقات الأمان.
لا تدعم Lura HTTP (S) فحسب ، ولكن نظرًا لأنها مجموعة من المكتبات العامة ، يمكنك إنشاء جميع أنواع بوابات API والوكلاء ، بما في ذلك على سبيل المثال ، بوابة RPC.
يحتاج مطور الهاتف المحمول إلى إنشاء صفحة أمامية واحدة تتطلب بيانات من 4 مكالمات مختلفة إلى خدمات الواجهة الخلفية ، على سبيل المثال:
1) api.store.server/products 2) api.store.server/marketing-promos 3) api.users.server/users/{id_user} 4) api.users.server/shopping-cart/{id_user}
الشاشة بسيطة للغاية ، ويحتاج عميل الهاتف المحمول فقط إلى استرداد البيانات من 4 مصادر مختلفة ، وانتظر الرحلة ذهابًا وإيابًا ثم اختيار بضع حقول فقط من الاستجابة.
ماذا لو كان الهاتف المحمول يمكنه استدعاء نقطة نهاية واحدة؟
1) lura.server/frontpage/{id_user}
هذا شيء يمكن أن يفعله لورا لك. وهكذا يبدو الأمر:
ستقوم Lura بدمج جميع البيانات وإرجاع الحقول التي تحتاجها فقط (الفرق في الحجم في الرسم البياني).
تفضل بزيارة موقع Lura Project لمزيد من المعلومات.
الكود المصدري لإطار مشروع Lura. إنه مصمم للعمل مع البرامج الوسيطة الخاصة بك وتوسيع الوظائف باستخدام مكونات صغيرة ومستقلة قابلة لإعادة الاستخدام بعد فلسفة UNIX.
استخدم هذا المستودع إذا كنت ترغب في الإنشاء من مصدر بوابة API الخاصة بك أو إذا كنت ترغب في إعادة استخدام المكونات في تطبيق آخر .
إذا كنت بحاجة إلى بوابة API تعمل بكامل طاقتها ، فيمكنك تنزيل Krakend Binary للهندسة المعمارية أو بناءها بنفسك.
يتم تقديم مشروع Lura كمكتبة GO التي يمكنك تضمينها في تطبيق GO الخاص بك لبناء وكيل قوي أو بوابة API. للحصول على مثال كامل ، تحقق من مستودع Krakend CE.
بالطبع ، ستحتاج إلى تثبيت GO في نظامك لتجميع الرمز.
مثال جاهز للاستخدام:
حزمة MainImport ("Flag" "log" "os" "github.com/luraproject/lura/config" github.com/luraproject/lura/logging "github.com/luraproject/lura/proxy" github.com/ luraproject/lura/router/gin ") func main () {port: = flag.int (" p "، 0 ، "منفذ الخدمة") loglevel: = flag.string ("l" ، "خطأ" ، "مستوى التسجيل") Debug: = flag.bool ("d" ، false ، "تمكين التصحيح") configfile: = flag .string ("C" ، "/etc/lura/configuration.json" ، "المسار إلى اسم ملف التكوين") flag.parse () محلل: = config.newparser () serviceConfig ، err: = parser.parse (*configfile) إذا err! = nil {log.fatal ("error:" ، err.error ()) } serviceConfig.debug = serviceConfig.debug || *debugif *port! = 0 {serviceConfig.port = *port} logger ، _: = logging.newlogger ( *loglevel ، os.stdout ، "[lura]") RouterFactory: = gin.defaultfactory (proxy.defaultfactory (logger) ، logger) Routerfactory.new (). Run (ServiceConfig) }
تفضل بزيارة نظرة عامة على الإطار للحصول على مزيد من التفاصيل حول مكونات مشروع Lura.
ملف تكوين Lura
تحقق من النتائج القياسية للعديد من مكونات Lura
يسعدنا دائمًا تلقي المساهمات. إذا كانت لديك أسئلة ، اقتراحات ، الأخطاء ، يرجى فتح مشكلة. إذا كنت ترغب في إرسال الرمز ، قم بإنشاء المشكلة وأرسل لنا طلب سحب للمراجعة.
اقرأ المساهمة. md لمزيد من المعلومات.
تابعنا على Twitter: @luraproject
قم بزيارة قناة Slack
اقرأ الوثائق
استمتع لورا!