Вы контролируете этот запрос?Обычно не рекомендуется напрямую вставлять значения в запрос следующим образом;вместо этого вы должны использовать переменные GraphQL , чтобы можно было передавать значения ключа отдельно от самого запроса.
mutation ProductUpdate($id: ID!, $tags: [String!]) {
productUpdate(input: {id: $id, tags: $tags}) {
product { id tags }
userErrors { field message }
}
}
Если вы выберете спецификацию GraphQL в некоторых деталяхимеет несколько основных частей: объектную модель;грамматика для разбора схем и запросов GraphQL;правила проверки для обеспечения соответствия запроса схеме;правила выполнения, чтобы фактически выполнить запрос к схеме;и часть транспорта HTTP (только вид в спецификации).В основном библиотеки GraphQL, которые я видел (на нескольких языках), объединяют все это воедино, но опытные пользователи могут разбирать их на части.
То, что вы описываете, возможно, возможно на любом языке с достаточно зрелым GraphQLбиблиотека, но у нее не будет супер-удобного синтаксиса.Абстрактно, вам нужно:
Получить схему из службы (есть стандартный запрос GraphQL для ее получения, и многие библиотеки могут принять эту форму JSON в качестве входных данных).
Разобрать предложенный запрос, используя выбранную вами библиотеку, в абстрактное синтаксическое дерево (AST).
Найдите интересующее вас значение в структуре AST;измените его, если это то, что вы пытаетесь сделать, и это разрешено.
Проверка запроса к AST с использованием библиотеки GraphQL.
Сериализуйте AST обратно в запрос GraphQL.
Отправьте запрос на сервер, как обычно.
Если вы неДля управления запросом схема переменных, которую я описал вначале, может вызвать небольшие проблемы.Вы можете обнаружить (как в моем примере запроса), что значение поля является ссылкой на переменную.Вы можете переписать его, но это ошибка проверки, чтобы иметь неиспользуемые переменные , так что вы можете быть вынуждены (возможно) также удалить переменные, что может стать проблематичным.