gpt4 book ai didi

java - 使用 americanexpress/nodes 的 GraphQL 查询列表

转载 作者:行者123 更新时间:2023-12-02 02:36:26 24 4
gpt4 key购买 nike

我正在使用 GraphQL 客户端 americanexpress/nodes。

这是我想要的查询:

query{
getLatestData(cppsId: "123", type: "battery", dataCount:2) {
value
dateTime
}

服务器返回包含值和日期时间的对象列表。使用Postman,服务器成功返回一个列表。

{
"data": {
"getLatestData": [
{
"value": "7823",
"dateTime": "1564197294"
},
{
"value": "7837",
"dateTime": "1564196469"
}
]
}
}

我正在使用以下带注释的类:

@GraphQLProperty(name = "getLatestData", arguments = {
@GraphQLArgument(name = "cppsId"), @GraphQLArgument(name = "type"), @GraphQLArgument(name = "dataCount") })
public class GetLatestDataAnnotationClass {
private String dateTime;
private String value;

public GetLatestDataAnnotationClass() {
}

//...

并构建请求:

GraphQLTemplate template = new GraphQLTemplate();

GraphQLRequestEntity requestEntity;
try {
requestEntity = GraphQLRequestEntity.Builder()
.url(endpoint)
.request(GetLatestDataAnnotationClass.class)
.arguments(new Arguments("getLatestData",
new Argument<String>("cppsId", cppsId), new Argument<String>("type", type), new Argument<Integer>("dataCount", dataCount)))
.build();
GraphQLResponseEntity<GetLatestDataAnnotationClass> responseEntity = template.query(
requestEntity,
GetLatestDataAnnotationClass.class);

但是,结果是 GetLatestDataAnnotationClass 类型的单个对象,而不是所需的 GetLatestDataAnnotationClass 列表。我尝试使用嵌套类,但结果查询类似于:

query { getLatestData (cppsId:"123",type:"battery",dataCount:2) {
abcd { value dateTime }
}
}

其中 abcd 是包含 GetLatestDataAnnotationClass 对象的列表。我缺少任何注释吗?如何告诉客户端解析列表而不是仅解析该类的单个实例?

谢谢

最佳答案

您可以像这样分离请求类以使其正确序列化。

public class LatestDataRequest {
@GraphQLArguments({
@GraphQLArgument(name = "cppsId"),
@GraphQLArgument(name = "type"),
@GraphQLArgument(name = "dataCount")
})
private List<DataValue> getLatestData;
...
}

+

public class DataValue {
private String dateTime;
private String value;
...
}

然后构建请求看起来像

GraphQLTemplate template = new GraphQLTemplate();

GraphQLRequestEntity requestEntity;
try {
requestEntity = GraphQLRequestEntity.Builder()
.url(endpoint)
.request(LatestDataRequest.class)
.arguments(new Arguments("getLatestData",
new Argument<String>("cppsId", cppsId),
new Argument<String>("type", type),
new Argument<Integer>("dataCount", dataCount)))
.build();
GraphQLResponseEntity<LatestDataRequest> responseEntity = template.query(requestEntity, LatestDataRequest.class);

关于java - 使用 americanexpress/nodes 的 GraphQL 查询列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57200370/

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