在 graphql-java 中检测查询类型(查询、变异、订阅)
Detect query type( query, mutation, subscription) in graphql-java
有没有办法检测查询类型 query
、 mutation
或 subscription
,最好不执行查询。
例如:
ExecutionInput executionInput = ExecutionInput
.newExecutionInput()
.query("subscription Test{test}")
.build();
是否可以检测到这是一个订阅请求? subscription Test{test}
不执行查询?
类似于executionInput.isSubscription()
您可以使用 ParseAndValidate
来解析 ExecutionInput
:
ParseAndValidateResult parseResult = ParseAndValidate.parse(executionInput);
parseResult.getDocument().getDefinitionsOfType(OperationDefinition.class)
.forEach(d->{
System.out.println(d.getOperation());
});
想法是从Document
(即查询解析结果)中获取OperationDefinition
的列表并获取其Operation
类型(一个枚举,其值为QUERY
,MUTATION
,SUBSCRIPTION
) 来自 OperationDefinition
.
P.S。我用 graphql-java v17
测试
有没有办法检测查询类型 query
、 mutation
或 subscription
,最好不执行查询。
例如:
ExecutionInput executionInput = ExecutionInput
.newExecutionInput()
.query("subscription Test{test}")
.build();
是否可以检测到这是一个订阅请求? subscription Test{test}
不执行查询?
类似于executionInput.isSubscription()
您可以使用 ParseAndValidate
来解析 ExecutionInput
:
ParseAndValidateResult parseResult = ParseAndValidate.parse(executionInput);
parseResult.getDocument().getDefinitionsOfType(OperationDefinition.class)
.forEach(d->{
System.out.println(d.getOperation());
});
想法是从Document
(即查询解析结果)中获取OperationDefinition
的列表并获取其Operation
类型(一个枚举,其值为QUERY
,MUTATION
,SUBSCRIPTION
) 来自 OperationDefinition
.
P.S。我用 graphql-java v17
测试