Я использую https://developer.github.com/v4/
И у меня есть такой огромный запрос:
query ($login: String!, $first: Int, $after: String) {
user (login: $login){
avatarUrl
login
name,
followers(first: $first, after:$after) {
edges{
cursor
node{
id
name
login
avatarUrl
}
}
totalCount
},
repositories(first: $first) {
edges{
cursor
node{
id
name
}
}
totalCount
}
}
}
Но я считаю, что запрашивать огромные данные с сервера - это плохо.
У меня есть страницы followers и repositories. Поэтому я думаю, что лучше разделить этот огромный запрос на небольшие запросы.
Вот небольшие запросы:
запрос подписчиков:
query($login: String!, $first: Int, $after: String) {
user(login: $login) {
followers(first: $first, after: $after) {
edges {
cursor
node {
id
name
login
avatarUrl
}
}
totalCount
}
}
}
запрос репозиториев:
query($login: String!, $first: Int, $after: String) {
user(login: $login) {
repositories(first: $first, after: $after) {
nodes {
id
name
}
totalCount
}
}
}
запрос пользователя:
query($login: String!, $first: Int) {
user(login: $login) {
avatarUrl
login
name
}
}
Правильно ли я? Это нужно делать? Как лучше всего поступить в этой ситуации? Есть ли какая-нибудь документация для обучения людей тому, как с этим справляться, или рассказывающая о лучших практиках?
Вы когда-нибудь находили для этого подходящее решение? Я не понимаю, как фрагменты помогают без связанных меньших запросов для повторного извлечения этой фрагментированной части более крупного запроса.


Вы можете поместить свои запросы в Фрагменты, и тогда вы все равно будете запускать только один запрос и иметь меньший "queries". Что-то вроде этого:
Фрагмент для подписчиков:
fragment followers on User {
followers(first: $first, after: $after) {
edges{
cursor
node{
id
name
login
avatarUrl
}
}
totalCount
},
}
Фрагмент для репозиториев:
fragment repositories on User {
repositories(first: $first) {
edges{
cursor
node{
id
name
}
}
totalCount
}
}
Сложите их все вместе в запросе:
query ($login: String!, $first: Int, $after: String) {
user (login: $login){
avatarUrl
login
name
...followers
...repositories
}
}
В чем проблема "огромного" запроса (на самом деле я думаю, что он довольно маленький)? Вот почему вообще был изобретен GraphQL. Также Github будет рад, что вы получите нужные данные - и только те, которые вам нужны - в одном запросе. Как описано в документации Apollo, есть несколько причин для разделения запросов (например, для ускорения пользовательского интерфейса), но особенно при взаимодействии сервера с сервером они возникают очень редко. Пожалуйста, прежде всего пересмотрите возможность их разделения.