Как уменьшить количество запросов с мутациями GraphQL?
Я хочу уменьшить количество запросов к серверу graphql. У меня есть объекты в массиве, как
[{name: "gokhan", age: 20}, ...];
Я использую graphql мутацию, чтобы добавить каждый элемент массива.
Если массив содержит 50 элементов, мне нужно отправить 50 запросов, чтобы добавить все данные. Есть ли способ уменьшить количество запросов?
1 ответ
Есть два основных варианта решения этой проблемы:
Вариант 1 (предпочтительно): добавить новую мутацию в схему GraphQL, которая обрабатывает GraphQLList
из этих входных объектов. То, как вы это сделаете, будет меняться в зависимости от того, какой сервер GraphQL вы используете (в PostGraphile вы будете использовать пользовательскую мутацию или расширение схемы); но язык определения схемы может выглядеть так:
input CreateManyPeopleInput {
people: [CreatePersonInput!]!
}
type CreateManyPeoplePayload {
createdPeople: [Person!]
}
extend type Mutation {
createManyPeople(input: CreateManyPeopleInput): CreateManyPeoplePayload
}
Вариант 2: включить "пакетную обработку запросов". Чтобы использовать это, вам понадобится и сервер, и клиент, поддерживающий GraphQL Query Batching. По сути, это позволяет отправлять несколько запросов GraphQL за один запрос и получать все ответы за один ответ. Это не требует каких-либо изменений в вашей схеме GraphQL, но оно не будет таким эффективным, и типичные реализации позволяют группировать только ~10 запросов в один запрос, поэтому ваши 50 запросов могут по-прежнему требовать 5 запросов.