如何在 GraphQL Java 中解析多个模式文件

Kep*_*ler 4 java graphql graphql-java

我正在将 GraphQL 与 java 一起使用。我有几个要解析的模式文件。任何人都可以让我知道是否有办法做到这一点。我使用了下面的方法,它只允许解析一个模式文件。

@Value("classpath:dashboard.graphql")
private Resource schemaResource;

File schemaFile = schemaResource.getFile();
TypeDefinitionRegistry definitionRegistry = new SchemaParser().parse(schemaFile);
Run Code Online (Sandbox Code Playgroud)

假设我有两个模式文件,例如dashboard.graphqlstudent.graphql。那么我们如何解析这两个文件呢?

任何人都可以请解释我。

谢谢

Doc*_*val 6

我知道这是一个古老的问题,但 SO 答案出现在官方 GraphQL-java文档之前,所以我想我会在这里发布:

SchemaParser schemaParser = new SchemaParser();
SchemaGenerator schemaGenerator = new SchemaGenerator();

File schemaFile1 = loadSchema("starWarsSchemaPart1.graphqls");
File schemaFile2 = loadSchema("starWarsSchemaPart2.graphqls");
File schemaFile3 = loadSchema("starWarsSchemaPart3.graphqls");

TypeDefinitionRegistry typeRegistry = new TypeDefinitionRegistry();

// each registry is merged into the main registry
typeRegistry.merge(schemaParser.parse(schemaFile1));
typeRegistry.merge(schemaParser.parse(schemaFile2));
typeRegistry.merge(schemaParser.parse(schemaFile3));

GraphQLSchema graphQLSchema = schemaGenerator.makeExecutableSchema(typeRegistry, buildRuntimeWiring());
Run Code Online (Sandbox Code Playgroud)


sve*_*lia 0

我们这样做是使用schemaParserBuilder

SchemaParserBuilder parser = SchemaParser.newParser();
parser.files(arrayOfFileNames);//fill the array with the paths to your schema files
//define other properties like resolvers here
GraphQLSchema schema = parser.build().makeExecutableSchema();
Run Code Online (Sandbox Code Playgroud)

如果你需要那个TypeDefinitionRegistry对象,另一个想法。只需分别读取所有架构文件,将它们合并到一个文件中String并使用schemaParser.parse(String schema). 事实上parser.files正是这样做的。