首页 > 解决方案 > GraphQL:查询无法验证

问题描述

我正在一个简单的 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}}'

怎么了?

标签: graphqlgraphql-spqr

解决方案


我想正确的查询应该是:

{
   getstatus(id:"123")
}

原因如下:

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

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


推荐阅读