تتيح هذه المكتبة دمج مشروع Lighthouse GraphQL الخاص بك مع Apollo Studio ، وإرسال إحصائيات التتبع والسماح لك بإرسال مخططك إلى Apollo لكسر الإخطارات التغييرات.
يتم اختبار هذه المكتبة مع منارة 6.
للمنارة 4.x ، استخدم الإصدار 1.x
من هذه المكتبة. بالنسبة إلى Lighthouse 5.x ، استخدم الإصدار 2.x
من هذه المكتبة.
أولاً ، قم بتثبيت حزمة الملحن:
composer require bright-alley/lighthouse-apollo
بعد ذلك ، انشر ملف التكوين وضبطه على النحو المطلوب:
php artisan vendor:publish --provider="BrightAlleyLighthouseApolloServiceProvider"
يتم تسجيل مزود الخدمة لهذه الحزمة تلقائيًا. إذا كنت قد قمت بتعطيل اكتشاف مقدمي الخدمات ، فتأكد من إضافة BrightAlleyLighthouseApolloServiceProvider
إلى مقدمي الخدمات. يتم تسجيل TracingServiceProvider من Lighthouse تلقائيًا. بشكل افتراضي ، يتم تجريد نتائج التتبع من استجابة GraphQL الفعلية عندما لا تكون في وضع التصحيح.
عند استخدام وضع ترسل Redis أو قاعدة البيانات ( يوصى بشدة باستخدام الإنتاج ) ، تأكد من إضافة lighthouse-apollo:publish-tracing
الحرفي على جدول وحدة التحكم في وحدة التحكم الخاصة بك ، لذلك يتم تشغيله بشكل متكرر لإرسال نتائج تتبع قائمة الانتظار إلى Apollo. يمكنك ضبط الجدول الزمني لتشغيل أكثر أو أقل في كثير من الأحيان بناءً على حجم حركة المرور.
public function schedule ( Illuminate Console Scheduling Schedule $ schedule )
{
$ schedule -> command ( ' lighthouse-apollo:submit-tracing ' )
-> everyMinute ();
}
يمكنك جمع معلومات حول العملاء الذين يتصلون بـ GraphQL API. إذا كان لديك تحكم في العملاء ، فأضف رؤوس x-apollo-client-name
و x-apollo-client-version
إلى طلبات GraphQL الخاصة بك ، وسيتم جمعها وإرسالها إلى استوديو Apollo.
إذا كنت بحاجة إلى مزيد من التحكم في تتبع العميل على جانب الخادم ، فيمكنك إنشاء منطقك المخصص الخاص بك عن طريق تطبيق واجهة BrightAlleyLighthouseApolloContractsClientInformationExtractor
، وربط تطبيقك الخاص على حاوية التطبيق في مزود الخدمة الخاص بك ، مثل:
$ this -> app -> bind ( ClientInformationExtractor ::class, MyCustomClientInformationExtractor ::class);
يستخدم Protobuf لإرسال آثار إلى استوديو Apollo. لإنشاء كعب جديد ، استخدم الأمر التالي:
protoc -I resources --php_out=generated/ resources/*.proto