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

Другие вопросы по тегам