我正在使用GraphQL和java。我有几个要解析的模式文件。任何人都可以告诉我是否有办法做到这一点。我使用了以下方式,只允许解析一个模式文件。
@Value("classpath:dashboard.graphql")
private Resource schemaResource;
File schemaFile = schemaResource.getFile();
TypeDefinitionRegistry definitionRegistry = new SchemaParser().parse(schemaFile);
我有两个架构文件,例如 dashboard.graphql 和 student.graphql 。那么我们如何解析这两个文件呢?
任何人都可以解释一下。
由于
答案 0 :(得分:3)
我知道这是一个古老的问题,但是SO答案出现在官方的GraphQL-java documentation之前,所以我想将其发布在这里:
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());
答案 1 :(得分:1)
我们使用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
- 对象。只需单独阅读所有模式文件,将它们合并到String
并使用schemaParser.parse(String schema)
。实际上parser.files
正是这样做的。