#graphql
Вопрос:
Предположим, у меня есть следующий запрос:
query a($f: Int) {
a {
b(f: $f) {
c {
d {
e
}
}
}
}
}
Могу ли я как-то сделать его меньше? Что-то вроде этого
query a($f: Int) {
a.b(f: $f).c.d {
e
}
}
Ответ №1:
Прежде всего, я бы счел такой простой, но действительно глубокий запрос плохим выбором дизайна для GraphQL, потому что для получения конечного результата требуется много запросов. Однако GraphQL не ограничивает глубину или сложность операций. Кроме того, распространенным вариантом использования вложенных запросов являются рекурсивные запросы, такие как comments
. Тем не менее, существуют лучшие решения, такие как использование директив и фрагментов.
Но, возвращаясь к вашему вопросу, нет реального способа сделать эти запросы намного меньше. Но чтобы ваши аргументы были небольшими и многоразовыми, вы можете посмотреть на фрагменты.
Ответ №2:
Подобный синтаксис обсуждается в этом выпуске с 2016 года, но маловероятно, что он когда-либо будет реализован. Дополнительная сложность языка GraphQL, вероятно, не стоит тех преимуществ, так как это применимо только в очень немногих случаях использования. На самом деле он не сохраняет данные и не экономит массово ввод текста. Однако вам не нужны пробелы (вот почему я говорю, что на самом деле это не сохраняет данные. Это сохраняет только последнюю закрывающую скобку).
query a($f: Int){
a{b(f: $f){c{d{
e
}}}}
}