我正在使用GraphQL客户端americanExpress/节点。
这是我想要的查询:
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);
我是GraphQL新手。我知道这是个很基本的问题。但我花了很多时间却没能成功。 我的需求是我需要从java类使用graphql-java api方法发送GraphQL查询。 以下是查询:
刚接触 GraphQL,我在通过 GraphiQL 发送查询时遇到问题。 这是我的方案. js 当我在 graphiql 上运行以下查询时: 我收到“语法错误 GraphQL 请求 (3:9) 预期名称,找到字符串”,但我希望获得 ID 为“23”的用户。 我错过了什么?
和相应的查询解析器 这里的主要想法只是有一个过滤器,可以看到什么食谱有一些成分,用户会通过应用程序通知。 我使用数据库中的所有食谱获得了“recipe”查询,但我需要一个获取这些食谱的查询,然后使用field comprient进行筛选,例如: 食谱-糖蛋糕,配料:糖、蜂蜜、四个… 配方-天鹅绒蛋糕,配料:糖、香草、... 并且用户通知Sugar,API应该返回这2个食谱,但是如果用户通知Suga
但是,当我想使用从上一次查询中获得的Id进行第二次查询并使用该Id作为筛选器时,该怎么办?当我像以前一样在ExampleComponent中返回另一个graphql查询时,我会得到一个错误,即我没有返回有效的react组件。那我该怎么做呢? 提前感谢!
我认为我的问题是一个常见的问题,我正在权衡作为解决方案的GraphQL的成本和收益。 我在一个产品上工作,该产品的数据由基于CRUD的RESTAPI存储。我们的应用程序组件公开了一个数据搜索接口,当然需要某种服务器端支持来请求该数据。这可以包括排序、筛选、选择字段等。当然,在Hibernate上下文中提供这些功能的更传统方式,比如endpoint的查询参数附加项,但是在这一上下文中尝试CopyQL