مكتبة خادم GraphQL لـ Rust
GraphQL هي لغة استعلام بيانات تم تطويرها بواسطة Facebook بهدف خدمة الواجهات الأمامية لتطبيقات الهاتف المحمول والويب.
يتيح Juniper إمكانية كتابة خوادم GraphQL في Rust والتي تتميز بأنها آمنة من حيث الكتابة وسريعة للغاية. نحاول أيضًا أن نجعل الإعلان عن مخططات GraphQL وحلها أمرًا مريحًا بقدر ما تسمح به Rust.
لا يشتمل Juniper على خادم ويب - ولكنه يوفر بدلاً من ذلك وحدات بناء لتسهيل التكامل مع الخوادم الحالية. وهو يوفر بشكل اختياري تكاملًا تم إنشاؤه مسبقًا لأطر عمل Actix وHyper وRocket وWarp، بما في ذلك Graphiql وGraphQL Playground المضمنين لسهولة تصحيح الأخطاء.
الكتاب متاح أيضًا للفرع الرئيسي والإصدارات الأقدم المنشورة بعد 0.11.1. انظر فهرس الكتاب.
أفضل مكان للبدء هو كتاب Juniper، الذي يحتوي على أدلة مع الكثير من الأمثلة، والتي تغطي جميع ميزات Juniper. (الكثير من العمل قيد التنفيذ)
للبدء سريعًا والتعرف على Juniper، راجع قسم Quickstart.
للحصول على معلومات محددة حول وحدات الماكرو والأنواع وواجهة برمجة تطبيقات Juniper، يعد مرجع واجهة برمجة التطبيقات (API) هو أفضل مكان للبحث فيه.
يمكنك أيضًا الاطلاع على مخطط Star Wars لرؤية مثال معقد يتضمن تعدد الأشكال مع السمات والواجهات. للحصول على مثال على تكامل إطار عمل الويب، راجع مجلدات أمثلة actix وaxum وhyper وrocket وwarp.
يدعم Juniper لغة استعلام GraphQL الكاملة وفقًا للمواصفات (أكتوبر 2021)، بما في ذلك الواجهات والاتحادات واستبطان المخطط وعمليات التحقق من الصحة. ويمكنه أيضًا إخراج المخطط بلغة مخطط GraphQL.
كاستثناء لمكتبات GraphQL الأخرى للغات الأخرى، تقوم Juniper ببناء أنواع غير فارغة افتراضيًا. سيتم تحويل حقل من النوع Vec<Episode>
إلى [Episode!]!
. سيكون نوع الصدأ المقابل لـ [Episode]
على سبيل المثال هو Option<Vec<Option<Episode>>>
.
جونيبر لا يلتزم بتنسيق التسلسل والنقل عبر الشبكة.
يدعم Juniper كلاً من التنفيذ غير المتزامن والمتزامن باستخدام execute()
و execute_sync()
على التوالي. التنفيذ غير المتزامن لا يتوافق مع وقت التشغيل.
يتبع Juniper منهج الكود الأول لتحديد مخططات GraphQL. إذا كنت ترغب في استخدام نهج المخطط أولاً بدلاً من ذلك، فكر في استخدام Juniper-from-Schema لإنشاء التعليمات البرمجية من ملف المخطط.
يتمتع Juniper بتكامل تلقائي مع بعض صناديق الصدأ الشائعة جدًا لجعل مخططات البناء أمرًا سهلاً. ستكون الأنواع الموجودة في هذه الصناديق قابلة للاستخدام في المخططات الخاصة بك تلقائيًا.
لم يصل Juniper إلى الإصدار 1.0 بعد، وبالتالي من المتوقع حدوث بعض عدم الاستقرار في واجهة برمجة التطبيقات (API).