На самом деле вы не можете многое сделать на стороне клиента. Это действительно больше проблем с дизайном схемы. Часто имеет смысл преобразовать несколько аргументов в поле в один тип входного объекта. Это имеет еще больший смысл, когда одни и те же аргументы дублируются в нескольких полях вашей схемы. Сравнить
type Query {
foo(baz: String, qux: String, quuz: String, corge: String, grault: String, garply: String, waldo: String, fred: String, plugh: String, xyzzy: String): Int!
bar(baz: String, qux: String, quuz: String, corge: String, grault: String, garply: String, waldo: String, fred: String, plugh: String, xyzzy: String): Int!
}
с
type Query {
foo(input: FilterInput): Int!
bar(input: FilterInput): Int!
}
input FilterInput {
baz: String
qux: String
quuz: String
corge: String
grault: String
garply: String
waldo: String
fred: String
plugh: String
xyzzy: String
}
Сокращение всех этих общих аргументов в отдельный тип не только уменьшает дублирование в вашей схеме, но и упрощает запрос клиента:
query SomeQuery($input: FilterInput) {
foo(input: $input)
}