Cette bibliothèque permet d'intégrer votre projet GraphQL de phare avec Apollo Studio, envoyant des statistiques de traçage et vous permettant d'envoyer votre schéma à Apollo pour briser les notifications de modifications.
Cette bibliothèque est testée avec le phare 6.
Pour Lighthouse 4.x, utilisez la version 1.x
de cette bibliothèque. Pour Lighthouse 5.x, utilisez la version 2.x
de cette bibliothèque.
Tout d'abord, installez le package compositeur:
composer require bright-alley/lighthouse-apollo
Ensuite, publiez le fichier de configuration et ajustez-le comme vous le souhaitez:
php artisan vendor:publish --provider="BrightAlleyLighthouseApolloServiceProvider"
Le fournisseur de services de ce package est automatiquement enregistré. Si vous avez désactivé la découverte automatique des fournisseurs de services, assurez-vous d'ajouter BrightAlleyLighthouseApolloServiceProvider
à vos fournisseurs de services. Le TracingServiceProvider de TracingService est automatiquement enregistré. Par défaut, les résultats de traçage sont éliminés de la réponse GraphQL réelle lorsqu'ils ne sont pas en mode de débogage.
Lorsque vous utilisez le mode de traçage Redis ou Database Send ( fortement recommandé pour l'utilisation de la production ), assurez-vous d'ajouter le lighthouse-apollo:publish-tracing
artisanal de la commande à l'horaire de votre noyau de console, il s'exécute donc fréquemment pour envoyer des résultats de trace filetés à Apollo. Vous pouvez ajuster le calendrier pour exécuter plus ou moins souvent en fonction de votre volume de trafic.
public function schedule ( Illuminate Console Scheduling Schedule $ schedule )
{
$ schedule -> command ( ' lighthouse-apollo:submit-tracing ' )
-> everyMinute ();
}
Vous pouvez recueillir des informations sur les clients appelez votre API GraphQL. Si vous avez un contrôle sur les clients, ajoutez les en-têtes x-apollo-client-name
et x-apollo-client-version
à vos demandes GraphQL, et ils seront rassemblés et envoyés à Apollo Studio.
Si vous avez besoin de plus de contrôle sur le traçage des clients du côté serveur, vous pouvez créer votre propre logique personnalisée en implémentant l'interface BrightAlleyLighthouseApolloContractsClientInformationExtractor
et en liant votre propre implémentation au conteneur de l'application dans votre fournisseur de services, comme ainsi:
$ this -> app -> bind ( ClientInformationExtractor ::class, MyCustomClientInformationExtractor ::class);
Protobuf est utilisé pour envoyer des traces à Apollo Studio. Pour générer de nouveaux talons, utilisez la commande suivante:
protoc -I resources --php_out=generated/ resources/*.proto