graphql-java SPQR: как использовать аннотацию @GraphQLUnion?
Я унаследовал проект с использованием GraphQL на Java с Grapqhl-SPQR. Он использует аннотации для автоматического создания GraphQL SDL, но мне нужно улучшить обработку ошибок. Из того, что я нашел в Интернете, мне нужно реализовать объединение разных типов, чтобы пользователь мог одновременно запрашивать несколько типов. Практически все интерактивные руководства обсуждают эту реализацию в SDL. Я пытаюсь понять, как это сделать с помощью GraphQL SPQR.
Итак, если у меня есть тип
type User {
id: ID!
name: String
}
и другой тип
type UserError {
message: String
}
Затем я могу создать союз, используя
union UserResult = User | UserError
userResult(id: 1) {
... on User {
id
name
}
... on UserError {
message
}
Как создать объединение в Graphql-SPQR? Я знаю что есть
@GraphQLUnion
1 ответ
ExplicitUnionInterfaceService unionService = new ExplicitUnionInterfaceService();
GraphQLSchema schema = new TestSchemaGenerator()
.withOperationsFromSingleton(unionService)
.generate();
__________________________________________________________________________________
private static class ExplicitUnionInterfaceService {
@GraphQLQuery(name = "userResult")
public UserInterface union(@GraphQLArgument(name = "id") int id) {
// Not implemented
return null;
}
}
@GraphQLUnion(name = "userInterface", description = "This union of User and UserError class", possibleTypes = {User.class, UserError.class})
public interface UserInterface {}
public static class User implements UserInterface {public String id; public String name;}
public static class UserError implements UserInterface {public String message;}
Вы можете найти примеры здесь src / test / java / io / leangen / graphql / UnionTest.java