Я создал схему GraphQL с типами интерфейса, как показано ниже (показаны только соответствующие части):
type Query {
getAllVehicles(): [Vehicle!]
}
interface Vehicle {
id: Int!
type: String!
}
type Truck implements Vehicle {
id: Int!
type: String!
}
Когда клиент запрашивает схему, например:
getAllVehicles() {
... on Truck {
id
type
}
}
В моем Java-коде я зарегистрировал распознаватель типов, который возвращает правильный объект на основе типа Vehicle:
.type(newTypeWiring("Vehicle")
.typeResolver(new TypeResolver() {
@Override
public GraphQLObjectType getType(TypeResolutionEnvironment env) {
Object javaObject = env.getObject();
if (javaObject instanceof Truck) {
return env.getSchema().getObjectType("Truck");
} else {
return env.getSchema().getObjectType("Car");
}
}
}))
Но когда вызывается DataFetcher для корневого запроса для getAllvehicles (), как я могу определить, какой тип транспортного средства (грузовика) был запрошен?