graphql-java - graphql-java SPQR:如何使用@GraphQLUnion 注解?
问题描述
我继承了一个在 Java 中使用 GraphQL 和 Grapqhl-SPQR spring boot starter 包(v 0.0.3)的项目。它使用注释来自动生成 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
注释,但我找不到任何其实现的工作示例。有没有人有例子或可以指出我的例子?
解决方案
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;}
推荐阅读
- python - 我如何在我的网站上制作一个按钮,当它被点击时。它可以在我的 python 脚本中发送数据
- html - 如何根据屏幕尺寸从离子菜单中动态更改侧面?
- php - 与保存在数据库中的序列化数据的多边形相交
- c# - 当应用程序运行时,如何移动到下一行代码?
- git - 从 openshift origin 3.11 构建应用程序时无法访问 github.com
- php - 如何配置 vscode 实时服务器以正确处理 php 文件(我使用的是 Win10 和 Chrome)?
- flutter - 有没有办法在 Flutter 的 webview 中抓取视频的链接?
- verilog - 如何删除程序计数器中的按钮逻辑并添加完成逻辑,以便程序计数器增加直到此完成逻辑为高?
- reactjs - Draftjs:链接不起作用,呈现为普通文本
- java - 如何避免 java.lang.NumberFormatException:对于输入字符串:“”错误