GraphQL - разница между использованием псевдонима и нескольких объектов запроса при выполнении пакетных запросов - PullRequest
1 голос
/ 17 июня 2020

Я новичок в GraphQL, поэтому, пожалуйста, поправьте меня, если я ошибаюсь там, где это необходимо. Мне интересно, что было бы наилучшим или наиболее подходящим способом для выполнения пакетных запросов в одном запросе. Я видел примеры, которые делают это:

[
  {
    query: "query(param1)"
  },
  {
    query: "query(param2)"
  }
]

Или примеры, которые используют псевдонимы для выполнения sh того же:

query {
  alias1: resolver1(param1)
  alias2: resolver2(param2)
}

На мой взгляд, псевдонимы более подходящий вариант, поскольку это единый запрос, и в рамках этого запроса я запрашиваю данные с разными параметрами. Итак, из двух вышеперечисленных вариантов, какой вариант будет более подходящим для выполнения пакетных запросов в GraphQL и почему? Спасибо!

1 Ответ

0 голосов
/ 17 июня 2020

Пакетные операции с отправкой их массива на сервер - это то, что поддерживается не всеми библиотеками. Это не столько функция GraphQL, сколько удобная функция, поддерживаемая некоторыми серверными библиотеками. С другой стороны, включение нескольких полей уровня root в одну операцию поддерживается всеми серверами GraphQL. Итак, если вы ожидаете, что серверная часть, которую вы запрашиваете, возможно, изменится в будущем, вы можете использовать вариант №2 вместо варианта №1, чтобы избежать потенциального реорганизации кода в будущем.

Вкл с другой стороны, пакетирование часто желательно, поскольку оно позволяет смешивать типы операций. Хотя вы можете включить любое количество полей уровня root в одну операцию, одновременно может выполняться только одна операция - это означает, что вы не можете смешивать запросы и мутации с вариантом №2. Если это то, что вам нужно сделать, пакетная обработка - единственный способ добиться этого за один запрос (при условии, что ваш сервер поддерживает это).

...