【问题标题】:GraphQL-Java support for complex filtersGraphQL-Java 对复杂过滤器的支持
【发布时间】:2017-08-15 09:26:48
【问题描述】:

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

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

参考实现包括过滤器参数是一个内置参数,它支持具有嵌套条件的复杂过滤器。但是,这些示例不适用于 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);

【问题讨论】:

  • 嗨@Shahin Askari,你有没有找到任何可以帮助解决这个问题的方法?非常感谢任何建议/链接。
  • 不,我们没有。根据我最初的研究,它不存在,我想在这里确认,kaqqao 似乎同意。考虑到这一点和其他限制,我们选择在项目的稍后部分返回 GraphQL 进行另一次审查。

标签: graphql graphql-java


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2017-10-19
    • 2018-07-18
    • 1970-01-01
    • 1970-01-01
    • 2019-04-22
    • 1970-01-01
    • 1970-01-01
    • 2012-04-02
    相关资源
    最近更新 更多