このライブラリを使用すると、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コマンドをコンソールカーネルのスケジュールに追加してください。スケジュールを調整して、交通量に基づいて多かれ少なかれ頻繁に実行できます。
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に送信されます。
サーバー側でのクライアントトレースをさらに制御する必要がある場合は、 BrightAlleyLighthouseApolloContractsClientInformationExtractor
インターフェイスを実装し、サービスプロバイダーのアプリコンテナに独自の実装をバインドすることにより、独自のカスタムロジックを作成できます。
$ this -> app -> bind ( ClientInformationExtractor ::class, MyCustomClientInformationExtractor ::class);
Protobufは、Apollo Studioに痕跡を送信するために使用されます。新しいスタブを生成するには、次のコマンドを使用します。
protoc -I resources --php_out=generated/ resources/*.proto