アーキテクチャフィールドをタイプに登録する
フィールドをタイプに登録する
Gato GraphQLはPublish-subscribeパターンを使用して、フィールドをタイプに「登録」します。このパターンでは、FieldResolverエンティティが特定のTypeResolverエンティティにフィールドを追加します。
この例では、クラスUserFieldResolverがフィールドusername、email、urlをクラスUserTypeResolverに追加しており、UserTypeResolverはタイプUserを解決します。
class UserFieldResolver extends AbstractDBDataFieldResolver
{
public static function getClassesToAttachTo(): array
{
return [UserTypeResolver::class];
}
public static function getFieldNamesToResolve(): array
{
return [
'username',
'email',
'url',
];
}Userタイプは、どのフィールドを満たすかを事前に知っているわけではありません。username、email、urlといったフィールドは、field resolverによってタイプに注入されます。
このようにして、GraphQLスキーマは容易に拡張可能になります。field resolverを追加するだけで、任意の拡張機能が既存のタイプに新しいフィールドを追加したり(例:フィールドUser.shippingAddressの追加)、フィールドの解決方法をオーバーライドしたりすることができます(例:User.urlを再定義してユーザーのウェブサイトを返すようにする)。
Prev
Next