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.graphql和student.graphql。那么我们如何解析这两个文件呢?
任何人都可以请解释我。
谢谢
我知道这是一个古老的问题,但 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)
我们这样做是使用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正是这样做的。
| 归档时间: |
|
| 查看次数: |
6156 次 |
| 最近记录: |