4

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

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

File schemaFile = schemaResource.getFile();
TypeDefinitionRegistry definitionRegistry = new SchemaParser().parse(schemaFile);

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

任何人都可以请解释我。

谢谢

4

2 回答 2

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());
于 2018-09-28T01:31:06.020 回答
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();

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

于 2017-10-04T10:38:31.017 回答