Если это просто вопрос эстетики, я бы не стал беспокоиться о количестве полей в типах Query
или Mutation
.Независимо от того, используют ли ваши клиентские команды GraphiQL и GraphQL Playground для составления своих запросов (и они действительно должны использовать один из этих инструментов), обе имеют функции автозаполнения, которые упрощают выборопределенное поле из списка сотен.
Возможно, вы работаете с определенными группами клиентов, которые имеют особые потребности в отношении данных, которые им видны, или в отношении типов мутаций, которые они могут выполнятьосновные данные.В этих случаях может иметь смысл иметь отдельные конечные точки с отдельными схемами, каждая из которых ограничена тем, что может видеть и делать конкретная группа клиентов.Если вы используете Apollo, вы можете даже начать с базовой схемы, а затем использовать преобразования схемы .Однако вам, вероятно, не следует создавать отдельные конечные точки, если конкретный клиент все равно будет делать запросы к каждой конечной точке - это накладывает чрезмерное бремя на клиента.
Конечно, вы можете просто вкладыватьполя для каждого корневого типа внутри других типов.Например:
type Query {
group1: Group1
group2: Group2
}
type Group1 {
foo: Foo
allFoos: [Foo!]!
# other fields
}
type Group2 {
bar: Bar
allBars: [Bar!]!
# other fields
}
Это прекрасно для вашего типа запроса, хотя я бы предостерегал против этого типа паттернов для мутаций .Конечно, если вы понимаете последствия, это может быть правильным решением для вашей команды.