简体   繁体   English

在 graphql-java 中检测查询类型(查询、突变、订阅)

[英]Detect query type( query, mutation, subscription) in graphql-java

Is there a way to detect the query type query , mutation or subscription , preferably without executing the query.有没有办法检测查询类型querymutationsubscription ,最好不执行查询。

For example:例如:

ExecutionInput executionInput = ExecutionInput
    .newExecutionInput()
    .query("subscription Test{test}")
    .build();

Is it possible to detect that this is a subscription request?是否可以检测到这是一个订阅请求? subscription Test{test} without executing the query? subscription Test{test}而不执行查询?

Something like executionInput.isSubscription()类似executionInput.isSubscription()

You can use ParseAndValidate to parse the ExecutionInput :您可以使用ParseAndValidate解析ExecutionInput

ParseAndValidateResult parseResult = ParseAndValidate.parse(executionInput);
        parseResult.getDocument().getDefinitionsOfType(OperationDefinition.class)
        .forEach(d->{
            System.out.println(d.getOperation());
        });

The idea is to get the list of the OperationDefinition from Document (ie query parsing result) and get its Operation type (an enum which has value QUERY , MUTATION , SUBSCRIPTION ) from OperationDefinition .这个想法是从Document获取OperationDefinition的列表(即查询解析结果),并从OperationDefinition获取其Operation类型(具有值QUERYMUTATIONSUBSCRIPTION的枚举)。

PS I test with graphql-java v17 PS我用graphql-java v17测试

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM