嗨,我是 graphql 的新手,特别是 graphql-java 。
有没有可能在 graphql-java 中使用 GraphQL 模式定义语言支持的方法?如果是,那怎么可能?
嗨,我是 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 文件(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 文档中找到更详细的示例。