该库允许将您的Lighthouse GraphQl项目与Apollo Studio集成,发送跟踪统计信息,并允许您将模式发送到Apollo,以打破更改通知。
该图书馆已通过灯塔6进行了测试。
对于Lighthouse 4.X,请使用此库的1.x
版本。对于Lighthouse 5.X,请使用此库的2.x
版本。
首先,安装作曲家包:
composer require bright-alley/lighthouse-apollo
接下来,发布配置文件并根据需要进行调整:
php artisan vendor:publish --provider="BrightAlleyLighthouseApolloServiceProvider"
此软件包的服务提供商将自动注册。如果您已禁用了服务提供商的自动发现,请确保将BrightAlleyLighthouseApolloServiceProvider
添加到您的服务提供商中。 Lighthouse的TracingServiceProvider自动注册。默认情况下,当不处于调试模式时,跟踪结果将从实际的GraphQL响应中删除。
使用REDIS或数据库发送跟踪模式(强烈建议用于生产使用)时,请确保将lighthouse-apollo:publish-tracing
Artisan命令添加到您的控制台内核的时间表中,因此它经常运行以将排队的跟踪结果发送到Apollo。您可以根据交通量调整时间表以或多或少地运行。
public function schedule ( Illuminate Console Scheduling Schedule $ schedule )
{
$ schedule -> command ( ' lighthouse-apollo:submit-tracing ' )
-> everyMinute ();
}
您可以收集有关哪些客户调用GraphQL API的信息。如果您对客户端有控制权,请在您的GraphQl请求中添加x-apollo-client-name
和x-apollo-client-version
version标头,并将收集并发送到Apollo Studio。
如果您需要对服务器端上的客户端跟踪的更多控制,则可以通过实现BrightAlleyLighthouseApolloContractsClientInformationExtractor
界面来创建自己的自定义逻辑,并将您自己的实现绑定到服务提供商中的App容器,例如:
$ this -> app -> bind ( ClientInformationExtractor ::class, MyCustomClientInformationExtractor ::class);
Protobuf用于将轨迹发送到阿波罗工作室。要生成新的存根,请使用以下命令:
protoc -I resources --php_out=generated/ resources/*.proto