GraphQL-Java支持复杂的过滤器

时间:2017-03-23 01:31:02

标签: graphql graphql-java

有谁知道Java GraphQL实现(graphql-java)是否支持复杂的过滤器。如果我正确理解了这篇文章:

https://www.graph.cool/docs/tutorials/designing-powerful-apis-with-graphql-query-parameters-aing7uech3/

参考实现包括filter参数是一个内置参数,它支持具有嵌套条件的复杂过滤器。但是这些示例不适用于graphql-java示例。

这是我使用graphql-java:2.3.0:

进行的简单示例
    GraphQLType employeeType = newObject()
            .name("Employee")
            .field(newFieldDefinition()
                    .name("name")
                    .type(Scalars.GraphQLString)
                    )
            .field(newFieldDefinition()
                    .name("age")
                    .type(Scalars.GraphQLInt)
                    )
            .field(newFieldDefinition()
                    .name("active")
                    .type(Scalars.GraphQLBoolean)
                    )
            .build();

    GraphQLObjectType companyType = newObject()
            .name("Company")
            .field(newFieldDefinition()
                    .name("name")
                    .type(Scalars.GraphQLString)
                    )
            .field(newFieldDefinition()
                    .name("employees")
                    .type(new GraphQLList(employeeType))
                    .argument(newArgument()
                            .name("name")
                            .type(Scalars.GraphQLString)
                            .build()
                    )
                    .argument(newArgument()
                            .name("age")
                            .type(Scalars.GraphQLInt)
                            .build()
                    )
                    .argument(newArgument()
                            .name("active")
                            .type(Scalars.GraphQLBoolean)
                            .build()
                    )
                    .dataFetcher(new EmployeeFetcher())
                    )
            .build();

    GraphQLObjectType companyListType = newObject()
            .name("Companies")
            .field(newFieldDefinition()
                    .name("companies")
                    .type(new GraphQLList(companyType))
                    .argument(newArgument()
                                .name("name")
                                .type(Scalars.GraphQLString)
                                .build()
                            )
                    .dataFetcher(new CompanyFetcher())
                    )
            .build();


    GraphQLSchema schema = GraphQLSchema.newSchema()
            .query(companyListType)
            .build();

    GraphQL graphQL = new GraphQL(schema);

1 个答案:

答案 0 :(得分:1)

你所说的是Graph.cool的扩展,而不是参考实现。你当然可以使用graphql-java构建类似的东西,但是没有任何东西像开箱即用,因为lib的目标只是实现规范。