架构将字段订阅到类型
将字段订阅到类型
Gato GraphQL 使用发布-订阅模式将字段「订阅」到类型。在该模式中,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 schema 变得易于扩展:只需添加一个 field resolver,任何扩展都可以向现有类型添加新字段(例如添加字段 User.shippingAddress),或者覆盖字段的解析方式(例如重新定义 User.url 以返回用户的网站地址)。
Prev
Next