GraphQL Java: создание исключений, когда запрос содержит неиспользуемые переменные
Допустим, у меня есть полезная нагрузка запроса с картой переменных и запросом. Есть ли graphql-java
есть ли какие-либо готовые механизмы, которые я могу использовать для обнаружения неиспользуемых переменных в полезной нагрузке?
Например:
type Query { hello : String! } # this just resolves to "hello world"
Когда пользователь отправляет {foo: 42}
как variables
в запросе полезной нагрузки я хочу скинуть ошибку (скажемIllegalArgumentException
).
Изменить: Также приветствуются ответы / комментарии о том, как реализовать это без каких-либо готовых механизмов.
1 ответ
Перед выполнением запроса используйте Parser
разобрать запрос в Document
который является объектным представлением запроса. Переменные, определенные в запросе, могут быть доступны путем просмотра его OperationDefinition
-> VariableDefinition
пример. Затем сравнивая их с переменными в полезной нагрузке запроса.
В качестве бонуса, поскольку движок graphql-java будет анализировать и проверять запрос для каждого выполнения запроса, и этот процесс может занимать некоторое время, чтобы избежать его синтаксического анализа и проверки дважды, вы можете использовать PreparsedDocumentProvider