如何生成用于Java联合的graphql模式?

时间:2019-07-04 05:22:47

标签: java spring-boot graphql graphql-spqr graphql-spring-boot

我的小组计划将Apollo网关用于联盟。因此,我们需要稍微不同地产生模式。

我们可以使用惊人的lib来产生类似的东西吗?

extend type User @key(fields: "id") {
  id: ID! @external
  reviews: [Review]
}

1 个答案:

答案 0 :(得分:0)

您要为类型添加一些字段和指令吗?

您可以使用 error: type mismatch; found : org.apache.spark.sql.Column required: Boolean .where( (!(testerList.isEmpty)) && (($"agent_account_homepage").isin(testerList:_*))) ^ 将外部方法作为字段附加。甚至提供一个自定义的@GraphQLContext,它返回其他ResolverBuilder(稍后将它们映射到字段)。 要添加指令,您可以创建用Resolver进行元注释的注释(有关示例,请参见测试)。 最后,您当然可以为@GraphQLDirective提供自定义TypeMapper,并完全控制该类型的映射方式。

例如您可以进行如下注释:

User

如果您随后将此注释放置在以下类型上:

@GraphQLDirective(locations = OBJECT)
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface Key {
    public String[] fields;
}

它将被映射为:

@Key(fields = "id")
public class User {
    @External //another custom annotation
    public @GraphQLId @GraphQLNonNull String getId() {...}
}

我想您了解type User @key(fields: "id") { id: ID! @external } ,但总之:

@GraphQLContext

由于//Some service class registered with GraphQLSchemaBuilder @GraphQLApi public class UserService { @GraphQLQuery public List<Review> getReviews(@GraphQLContext User user) { return ...; //somehow get the review for this user } } ,类型@GraphQLContext现在具有一个User字段(即使review: [Review]类没有该字段)。