GraphQL Java: создание исключений, когда запрос содержит неиспользуемые переменные - PullRequest
0 голосов
/ 16 октября 2018

Допустим, у меня есть полезная нагрузка запроса с картой переменных и запросом.Есть ли у graphql-java какие-либо готовые механизмы, которые я могу использовать для обнаружения неиспользуемых переменных в полезной нагрузке?

Например:

type Query { hello : String! } # this just resolves to "hello world"

Когда пользователь отправляет {foo: 42} в качестве variables в полезной нагрузке запроса, я хочу выдать ошибку (скажем, IllegalArgumentException).

Редактировать: Также приветствуются ответы / комментарии о том, как реализовать это без каких-либо готовых механизмов.

1 Ответ

0 голосов
/ 22 октября 2018

Перед выполнением запроса используйте Parser, чтобы разобрать запрос в Document, который является объектным представлением запроса. Доступ к переменным, определенным в запросе, можно получить, просмотрев его OperationDefinition -> VariableDefinitionпример.Затем сравнивая их с переменными в полезной нагрузке запроса.

В качестве бонуса, поскольку движок graphql-java будет анализировать и проверять запрос для каждого выполнения запроса, и этот процесс может занимать некоторое время, чтобы избежать синтаксического анализа ипроверьте его дважды, вы можете использовать PreparsedDocumentProvider

...