graphql - 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}}'
怎么了?
解决方案
我想正确的查询应该是:
{
getstatus(id:"123")
}
原因如下:
您将 id 参数定义为 String ,因此需要在参数值周围使用双引号。
getStatus
查询被定义为返回 a ,String
它是一个标量,但不是 GraphQL 的对象类型。因此,您无需进一步定义要返回的字段,因为标量没有任何字段可供您选择。
推荐阅读
- powershell - 在脚本中检查系统睡眠状态
- javascript - 有没有办法在不同的 IP 下运行 Nightwatch 自动化
- heroku - 如何在 Heroku 上的 Rails 6 应用程序上设置 RAILS_PRODUCTION_KEY 配置变量
- swiftui - 如何调整选取器中的行大小?
- javascript - 仅当具有特定 id 的元素可用时才执行函数
- java - 如何从我的 Mac 卸载其他/较旧的 Java 版本?
- python - ERROR Connection in use: ('0.0.0.0', 5000) 启动 gunicorn 以在本地运行 python 应用程序 Heroku
- c# - 无法将“MySql.Data.MySqlClient.MySqlException”类型的对象转换为“System.IConvertible”类型。
- python - 如何打开和关闭 Tkinter 窗口?
- python - 如何使用 Python 计算一行和下一行之间的值(来自 csv 文件)