Esta biblioteca permite integrar su proyecto GraphQL Lighthouse con Apollo Studio, enviar estadísticas de rastreo y permitirle enviar su esquema a Apollo para romper las notificaciones de cambios.
Esta biblioteca se prueba con Lighthouse 6.
Para Lighthouse 4.x, use la versión 1.x
de esta biblioteca. Para Lighthouse 5.x, use la versión 2.x
de esta biblioteca.
Primero, instale el paquete compositor:
composer require bright-alley/lighthouse-apollo
A continuación, publique el archivo de configuración y ajústelo según lo desee:
php artisan vendor:publish --provider="BrightAlleyLighthouseApolloServiceProvider"
El proveedor de servicios para este paquete se registra automáticamente. Si ha deshabilitado el descubrimiento automático de proveedores de servicios, asegúrese de agregar BrightAlleyLighthouseApolloServiceProvider
a sus proveedores de servicios. TracingServiceProvider de Lighthouse se registra automáticamente. Por defecto, los resultados del rastreo se eliminan de la respuesta GRAPHQL real cuando no en modo de depuración.
Cuando use el modo de trazado de envío de Redis o Base de datos ( altamente recomendado para el uso de producción ), asegúrese de agregar el comando lighthouse-apollo:publish-tracing
Artisan al horario de su kernel de consola, por lo que se ejecuta con frecuencia para enviar resultados de trazas de cola a Apolo. Puede ajustar el horario para ejecutar más o menos a menudo en función de su volumen de tráfico.
public function schedule ( Illuminate Console Scheduling Schedule $ schedule )
{
$ schedule -> command ( ' lighthouse-apollo:submit-tracing ' )
-> everyMinute ();
}
Puede recopilar información sobre qué clientes llaman a su API GraphQL. Si tiene control sobre los clientes, agregue los encabezados x-apollo-client-name
y x-apollo-client-version
a sus solicitudes GraphQL, y se reunirán y enviarán a Apollo Studio.
Si necesita más control sobre el rastreo del cliente en el lado del servidor, puede crear su propia lógica personalizada implementando la interfaz BrightAlleyLighthouseApolloContractsClientInformationExtractor
, y vinculando su propia implementación al contenedor de la aplicación en su proveedor de servicios, así:
$ this -> app -> bind ( ClientInformationExtractor ::class, MyCustomClientInformationExtractor ::class);
ProtoBuf se utiliza para enviar trazas a Apollo Studio. Para generar nuevos stubs, use el siguiente comando:
protoc -I resources --php_out=generated/ resources/*.proto