Интерфейсы(Interfaces)¶
Интерфейс Interface
содержит основные поля, которые будут имплементированы несколькими объектными типами ObjectType
.
Основы:
Каждый интерфейс это класс Python, который наследуется от
graphene.Interface
.Каждый аттрибут интерфейса представляет собой поле GraphQL.
Пример¶
В данном примере определен интерфейс персонажа Character
с именем name
.
А Human
и Droid
- это две имплементации данного интфрейса:
import graphene
class Character(graphene.Interface):
name = graphene.String()
# Human is a Character implementation
class Human(graphene.ObjectType):
class Meta:
interfaces = (Character, )
born_in = graphene.String()
# Droid is a Character implementation
class Droid(graphene.ObjectType):
class Meta:
interfaces = (Character, )
function = graphene.String()
name
- поле интерфейса Character
, которое теперь существет в обоих объектных типах ObjectTypes
человека Human
и дроида Droid
(так как они оба реализуют интерфейс Character
). Каждый ObjectType
также может иметь дополнительные поля.
Вышеуказанные типы имет следующее представление в Вашей схеме:
interface Character {
name: String
}
type Droid implements Character {
name: String
function: String
}
type Human implements Character {
name: String
bornIn: String
}