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

в SDL, чтобы я мог делать запросы.
      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

Другие вопросы по тегам