GraphQL хорошо работает для API, где «форма» данных довольно четко определена.Например, в GitHub GraphQL API репозитории имеют ссылки (теги или ветви), имеют GitObjects (коммиты или теги), которые имеют довольно фиксированный набор атрибутов.Вы не создали бы отдельное поле GraphQL для каждой ветви;вместо этого вы можете искать
query WhereIsMaster($name: String!, $owner: String!) {
repository(name: $name, owner: $owner) {
refs(refPrefix: "refs/heads/master") {
nodes {
target {
oid
}
}
}
}
}
Если вы разрабатываете свою собственную схему и у вас есть хранилище типа ключ / значение, вам придется написать свой собственный поиск для нее
type KeyValuePair implements Node {
id: ID!
key: String!
value: String!
}
type Query {
lookup(key: String!): KeyValuePair
}
type Mutation {
insert(key: String!, value: String!): KeyValuePair!
}
Если ваша модель данных действительно свободна (например, MongoDB позволяет хранить произвольные документы JSON), то GraphQL не очень подходит для нее.