首先,你必须更多地说明你的问题,从你的示例查询中,我实际上无法看到你遇到了问题的哪一部分,它可能是在参数,嵌套对象或数据提取器中
我也是 GraphQL(java) 的新手,我不打算与你分享直接的答案,而是打算向你展示我如何解决类似的问题。
graphql-java实际上在他们的测试用例中做得很好。你可以参考这里:src/test/groovy/graphql,以获得一些关于如何创建和查询GraphQL模式的想法。
参数
我在这里找到了一个类似的案例:星球大战.java#L137
newFieldDefinition()
.name("human")
.type(humanType)
.argument(newArgument()
.name("id")
.description("id of the human")
.type(new GraphQLNonNull(GraphQLString))
.build())
.dataFetcher(StarWarsData.getHumanDataFetcher())
.build())
在本例中,只定义了一个参数,即 id。 告诉我们这是一个必需的字符串参数。new GraphQLNonNull(GraphQLString)
领域
对于字段,它在 中定义,您可以参考 StarWarsSchema.java#L61。嵌套字段只是具有某些字段的另一种类型,例如,humanType
.type(nestedHumanType)
数据提取器
毕竟,您可以处理参数 id 并返回一些数据。你可以参考这里的例子:StarWarsData.groovy#L89
为了使我的代码看起来更干净,通常我会为DataFetcher创建一个单独的类,例如:
public class HumanDataFetcher implements DataFetcher {
@Override
public Object get(DataFetchingEnvironment environment) {
String id = (String)environment.get("id");
// Your code here
}
}
希望这有帮助。