gpt4 book ai didi

java - 在 java 中发送 GraphQl 查询

转载 作者:搜寻专家 更新时间:2023-10-30 20:02:10 25 4
gpt4 key购买 nike

我是 GraphQL 的新手。我知道这是非常基本的问题。但是尝试了很多时间,但我做不到。

我的要求是我需要使用来自 java 类的 graphql-java api 方法发送 GraphQL 查询。

这里是查询:

{
contentItem(itemId: 74152479) {
slug
updatedAt
contributors {
id
isFreeForm
name
}
}
}

最佳答案

首先,你必须更多地说明你的问题,从你的示例查询中我实际上看不出你有问题的部分,它可能在参数嵌套对象,或数据 getter

我也是 GraphQL(java) 的新手,我没有直接与您分享答案,而是想向您展示我如何解决类似的问题。

graphql-java 实际上在他们的测试用例中做得很好。您可以引用这里:src/test/groovy/graphql获得有关如何创建和查询 GraphQL 模式的一些想法。

参数

我在这里找到了一个与您类似的案例:StarWarsSchema.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())

在这种情况下,只定义了一个参数,即idnew GraphQLNonNull(GraphQLString) 告诉我们这是一个必需的字符串参数。

字段

对于字段,定义在humanType中,可以引用StarWarsSchema.java#L61 .嵌套字段只是另一种具有某些字段的类型,例如 .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
}
}

希望这对您有所帮助。

关于java - 在 java 中发送 GraphQl 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36914918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com