当前位置: 首页 > 知识库问答 >
问题:

GraphQL-java SPQR:如何使用@GraphQLUnion注释?

邵宏达
2023-03-14

我继承了一个用Grapqhl-SPQR spring boot starter包(v 0.0.3)在Java中使用GraphQL的项目。它使用注释来自动生成GraphQL SDL,但是我需要改进错误处理。根据我在网上发现的,我需要实现不同类型的联合,这样用户就可以同时查询多种类型。几乎所有的在线指南都讨论了SDL的这种实施方式。我正在尝试用GraphQL SPQR解决这个问题。

所以如果我有喜欢的类型

type User {
  id: ID!
  name: String
}

和另一种类型

type UserError {
  message: String
}

然后,我可以在SDL中使用union UserResult=User|UserError创建联合,以便查询。

userResult(id: 1) {
  ... on User {
    id
    name
  }
  ... on UserError {
    message
}

我如何在Graphql-SPQR中创建联合?我知道有一个@GraphQLUnion注释,但是我找不到它的实现的任何工作示例。有人有例子或者可以给我指出例子吗?

共有1个答案

凌远
2023-03-14
ExplicitUnionInterfaceService unionService = new ExplicitUnionInterfaceService();

GraphQLSchema schema = new TestSchemaGenerator()
        .withOperationsFromSingleton(unionService)
        .generate();
__________________________________________________________________________________        
private static class ExplicitUnionInterfaceService {
    @GraphQLQuery
    public UserInterface userResult(@GraphQLArgument(name = "id") int id) {
        // Not implemented
        return null;
    }
}

@GraphQLUnion(name = "userResult", 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/联合测试.java

 类似资料:
  • 使用graph ql-spqr-spring-boot-starter和graph ql-spqr,但无法使用@GraphQLDirective创建片段,不确定是否有任何方法可以执行此操作。 我的意图是通过代码创建片段,例如 并在下面的查询中使用这个片段,有人能指导我用什么注释吗?

  • 问题内容: 目前,在graphql-java库中看不到分页的现有支持。它确实具有一些基本的中继支持,在其中,我们可以创建Facebook推荐的实现分页的方式。 这是有助于实现该目标的方法。但是,由于没有文档,因此很难理解此功能的工作原理。可有人击穿的步骤,他们将采取添加分页支持,如果他们已经有一个现成的模式,它允许像基本的查询,,等使用graphql- Java库? 问题答案: 您甚至不需要中继连

  • 问题内容: 如何在React组件的方法内部使用注释? 我有以下组成部分: 我的评论显示在用户界面中。 在组件的渲染方法中应用单行和多行注释的正确方法是什么? 问题答案: 因此,在方法内允许使用注释,但为了在JSX中使用它们,必须将它们用大括号括起来并使用多行样式的注释。 您可以在此处阅读有关注释如何在JSX中工作的更多信息

  • 问题内容: 我需要访问以获得有关某个存储库的一些数据。以下命令很好用 现在,我需要调用相同的名称来操纵输出。这是我尝试过的代码, 当我调试代码时,它向我显示此错误, HttpResponseProxy {HTTP / 1.1 400错误的请求[服务器:GitHub.com,日期:2017年2月3日,星期五,格林尼治标准时间12:14:58,内容类型:application / json; char

  • 如何使用 Graphql SPQR 库实现 GraphQL 的订阅功能?

  • 我需要访问以获得关于某个存储库的一些数据。下面的命令可以正常工作 现在我需要在中调用相同的代码,因为我需要操作输出。下面是我尝试过的代码, 我做错了什么?你能帮我解决这个问题吗。提前致谢