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")
}
原因如下:
您将 id 参数定义为 String ,因此需要在参数值周围使用双引号。
getStatus
查询被定义为 return 一个 String
,它是一个标量,但不是 GraphQL 术语中的对象类型。因此,您无需进一步定义要编辑的字段 return,因为标量没有任何字段供您选择。
我正在一个简单的 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")
}
原因如下:
您将 id 参数定义为 String ,因此需要在参数值周围使用双引号。
getStatus
查询被定义为 return 一个String
,它是一个标量,但不是 GraphQL 术语中的对象类型。因此,您无需进一步定义要编辑的字段 return,因为标量没有任何字段供您选择。