ArchitekturaSubskrybowanie pól do typów
Subskrybowanie pól do typów
Gato GraphQL wykorzystuje wzorzec Publish-subscribe, aby pola były „subskrybowane" do typów, w którym encja FieldResolver dodaje pola do encji TypeResolver.
W tym przykładzie klasa UserFieldResolver dodaje pola username, email i url do klasy UserTypeResolver, która rozwiązuje typ User:
class UserFieldResolver extends AbstractDBDataFieldResolver
{
public static function getClassesToAttachTo(): array
{
return [UserTypeResolver::class];
}
public static function getFieldNamesToResolve(): array
{
return [
'username',
'email',
'url',
];
}Typ User nie wie z góry, które pola będzie obsługiwać, ale te (username, email i url) są zamiast tego wstrzykiwane do typu przez field resolver.
W ten sposób schemat GraphQL staje się łatwo rozszerzalny: poprzez proste dodanie field resolvera dowolne rozszerzenie może dodawać nowe pola do istniejącego typu (np. pole User.shippingAddress) lub zmienić sposób rozwiązywania pola (np. redefiniując User.url, aby zwracało witrynę użytkownika).
Prev