bright-alley/lighthouse-apollo

集成,用于将Laravel Lighthouse的信息上传到Apollo Studio。

v3.0 2023-08-04 11:52 UTC

README

此库允许您将Lighthouse GraphQL项目与Apollo Studio集成,发送跟踪统计信息,并允许您将模式发送到Apollo以接收破坏性变更通知。

Lighthouse要求

此库与Lighthouse 6进行了测试。

对于Lighthouse 4.x,使用此库的1.x版本。对于Lighthouse 5.x,使用此库的2.x版本。

安装

首先,安装Composer包

composer require bright-alley/lighthouse-apollo

然后,发布配置文件并按需调整

php artisan vendor:publish --provider="BrightAlley\LighthouseApollo\ServiceProvider"

此包的服务提供程序将自动注册。如果您已禁用服务提供程序自动发现,请确保将\BrightAlley\LighthouseApollo\ServiceProvider添加到您的服务提供程序中。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的客户端的信息。如果您控制客户端,请将x-apollo-client-namex-apollo-client-version头添加到您的GraphQL请求中,然后它们将被收集并发送到Apollo Studio。

如果您需要在服务器端对客户端跟踪有更多控制,您可以通过实现BrightAlley\LighthouseApollo\Contracts\ClientInformationExtractor接口来创建自己的自定义逻辑,并在服务提供程序中将自己的实现绑定到应用容器中,如下所示

$this->app->bind(ClientInformationExtractor::class, MyCustomClientInformationExtractor::class);

开发

Protobuf用于将跟踪发送到Apollo Studio。要生成新存根,请使用以下命令

protoc -I resources --php_out=generated/ resources/*.proto