GraphQL:查询验证失败

GraphQL : Query failed to validate

我正在一个简单的 java 程序中测试 graph-spqr 库。

这是我目前所做的:

public class GraphQLResolver {
    
    private String status;
    private Integer price;
    
    @GraphQLMutation(name="updateStatusOrder")
    public void updateStatusOrder(@GraphQLArgument(name="id") String orderId,@GraphQLArgument(name="status") String status) {
       //to do
    }
    
    @GraphQLQuery(name="getStatus")
    public String getStatus(@GraphQLArgument(name="id") String orderId) {
        this.status="Example of status";
        return this.status;
    }

}

然后,我在 main 方法中调用构建 GraphQL 方法

public class Main {

    public static void main(String[] args) {

        GraphQLSchema schema = new GraphQLSchemaGenerator()
        .withOperationsFromSingleton(new GraphQLResolver()) 
        .generate(); //done ;)

        GraphQL graphQL = new GraphQL.Builder(schema).build();  
        
        ExecutionResult result = null;
        result = graphQL.execute("{getstatus(id:123){status}}");
    }

}

我有错误:查询验证失败:'{status(id:123){status}}'

怎么了?

我想正确的查询应该是:

{
   getstatus(id:"123")
}

原因如下:

  1. 您将 id 参数定义为 String ,因此需要在参数值周围使用双引号。

  2. getStatus 查询被定义为 return 一个 String,它是一个标量,但不是 GraphQL 术语中的对象类型。因此,您无需进一步定义要编辑的字段 return,因为标量没有任何字段供您选择。