bright-alley / lighthouse-apollo
集成,用于将Laravel Lighthouse的信息上传到Apollo Studio。
Requires
- php: >=8.0
- ext-curl: *
- ext-json: *
- ext-zlib: *
- czproject/git-php: ^4.0
- google/protobuf: ^v3.13.0.1
- illuminate/redis: ^9.0 || ^10.0
- illuminate/support: ^9.0 || ^10.0
- nuwave/lighthouse: ^6.0
Requires (Dev)
- phpunit/phpunit: ^9.4
- vimeo/psalm: ^4.30
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-name
和x-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