Как уменьшить количество запросов с мутациями 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 запросов.

Другие вопросы по тегам