gpt4 book ai didi

java - 动态生成 GraphQL schema 支持

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:04:48 27 4
gpt4 key购买 nike

是否可以动态创建 GraphQL 架构?

我们将数据存储在 mongoDB 中,并且有可能添加新字段。我们不希望 mongoDB 文档中这个新添加的字段发生任何代码更改。

有什么方法可以动态生成模式?

Schema is defined in code, but for java(schema as pojo), when new attribute is added, you have to update and recompile code, then archive and deploy the jar again. Any way to generate schema by the data instead of pre-define it?

目前我们正在使用 java 相关项目( graphql-java , graphql-java-annotations )进行 GraphQL 开发。

最佳答案

你可以使用 graphql-spqr ,它允许您根据您的服务类自动生成模式。在您的情况下,它看起来像这样:

public class Pojo {

private Long id;
private String name;

// whatever Ext is, any (complex) object would work fine
private List<Ext> exts;
}

public class Ext {
public String something;
public String somethingElse;
}

假设您有一个包含您的业务逻辑的服务类:

public class PojoService {

//this could also return List<Pojo> or whatever is applicable
@GraphQLQuery(name = "pojo")
public Pojo getPojo() {...}
}

要公开此服务,您只需执行以下操作:

GraphQLSchema schema = new GraphQLSchemaGenerator()
                .withOperationsFromSingleton(new PojoService())
                .generate();

然后您可以触发一个查询,例如:

query test {
pojo {
id
name
exts {
something
somethingElse
} } }

不需要奇怪的包装器或任何类型的自定义代码,也不需要牺牲类型安全性。适用于泛型、依赖项注入(inject)或您的项目中可能有的任何其他爵士乐。

全面披露:我是 graphql-spqr 的作者.

关于java - 动态生成 GraphQL schema 支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42080536/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com