我正在尝试使用graphql-java-8库开发spring boot graphQl服务。我从Web服务中获取数据,我从服务中得到的响应有点像动态,我必须在响应graphQl模式中引入graphQl接口。
extend type Query {
search(
name: String,
category: String
): [ResultOne]
}
interface ResultOne {
name: String
content: String
}
type Fish implements ResultOne {
name: String
content: String
weight: Float
}
type Fruit implements ResultOne {
name: String
content: String
Color: String
}
type Toy implements ResultOne {
name: String
content: String
description: String
}
使用graphQl框架连接我的模型,
return RuntimeWiring.newRuntimeWiring()
.wiringFactory(new WiringFactory() {})
.type(
TypeRuntimeWiring.newTypeWiring("ResultOne")
.typeResolver(env -> {
if(env.getObject() instanceof Map) {
Map object = env.getObject();
if (object.containsKey("name") && object.get("name").equals("fish")) {
return (GraphQLObjectType) env.getSchema().getType("Fish");
} else if (object.containsKey("name") && object.get("name").equals("fruit")) {
return (GraphQLObjectType) env.getSchema().getType("Fruit");
} else if(object.containsKey("name") && object.get("name").equals("toy")) {
return (GraphQLObjectType) env.getSchema().getType("Toy");
} else {
return null;
}
} else {
return null;
}
})
)
.build();
因此,类型解决问题也是一种方法,不确定它是否理想。对于数据绑定,我不知道如何以graphQl的推荐方式执行此操作。我想补充一点,我为整个API提供了一个端点和单个提取器。数据在单个请求中获取,并且不想调用两次,因为我已经有完整的响应。我必须在运行时解析类型并为实现的模型连接数据。到目前为止,数据被完美地获取,并且值也在到我的查询的接口之前,但是对于接口实现的模型部分,例如:Fish,Fruit&在这个例子中玩具。我的问题是如何为java库动态解析类型数据?
请随时向我提出有关此问题的任何问题。
示例查询:
{
search() {
ResultOne {
name
content
... on Fish {
weight
}
}
}
}
我目前得到的相应回应:
{
"data": {
"search": [
{
"resultOne": [
{
"name": "Salmon",
"content": "Frozen Food",
"weight": null
}
]
}
]
},
"extensions": {
"Total-ResponseTime": 23020,
"resultOne-Time": 22683
}
}