graphql 中的 GraphQL 模式定义语言支持-java
GraphQL Schema Definition Language support in graphql-java
嗨,我是 graphql 的新手,特别是 graphql-java .
有没有可能使用 graphql-java 中的 GraphQL 模式定义语言支持的方法?如果是那怎么可能?
是的,这是可能的,因为 release 3.0.0
。
schema {
query: QueryType
}
type QueryType {
hero(episode: Episode): Character
human(id : String) : Human
droid(id: ID!): Droid
}
您可以转换以下IDL-File(starWarsSchema.graphqls)为可执行文件模式 像这样:
SchemaParser schemaParser = new SchemaParser();
SchemaGenerator schemaGenerator = new SchemaGenerator();
File schemaFile = loadSchema("starWarsSchema.graphqls");
TypeDefinitionRegistry typeRegistry = schemaParser.parse(schemaFile);
RuntimeWiring wiring = buildRuntimeWiring();
GraphQLSchema graphQLSchema = schemaGenerator.makeExecutableSchema(typeRegistry, wiring);
您还必须实施 buildRuntime
函数以 将您的静态模式与解析器连接起来 。
RuntimeWiring buildRuntimeWiring() {
return RuntimeWiring.newRuntimeWiring()
.scalar(CustomScalar)
.type("QueryType", typeWiring -> typeWiring
.dataFetcher("hero", new StaticDataFetcher(StarWarsData.getArtoo()))
.dataFetcher("human", StarWarsData.getHumanDataFetcher())
.dataFetcher("droid", StarWarsData.getDroidDataFetcher())
)
.build();
}
您可以在 graphql-java documentation 中找到更详细的示例。
嗨,我是 graphql 的新手,特别是 graphql-java .
有没有可能使用 graphql-java 中的 GraphQL 模式定义语言支持的方法?如果是那怎么可能?
是的,这是可能的,因为 release 3.0.0
。
schema {
query: QueryType
}
type QueryType {
hero(episode: Episode): Character
human(id : String) : Human
droid(id: ID!): Droid
}
您可以转换以下IDL-File(starWarsSchema.graphqls)为可执行文件模式 像这样:
SchemaParser schemaParser = new SchemaParser();
SchemaGenerator schemaGenerator = new SchemaGenerator();
File schemaFile = loadSchema("starWarsSchema.graphqls");
TypeDefinitionRegistry typeRegistry = schemaParser.parse(schemaFile);
RuntimeWiring wiring = buildRuntimeWiring();
GraphQLSchema graphQLSchema = schemaGenerator.makeExecutableSchema(typeRegistry, wiring);
您还必须实施 buildRuntime
函数以 将您的静态模式与解析器连接起来 。
RuntimeWiring buildRuntimeWiring() {
return RuntimeWiring.newRuntimeWiring()
.scalar(CustomScalar)
.type("QueryType", typeWiring -> typeWiring
.dataFetcher("hero", new StaticDataFetcher(StarWarsData.getArtoo()))
.dataFetcher("human", StarWarsData.getHumanDataFetcher())
.dataFetcher("droid", StarWarsData.getDroidDataFetcher())
)
.build();
}
您可以在 graphql-java documentation 中找到更详细的示例。