gpt4 book ai didi

java - 如何生成与 java 联合的 graphql 模式?

转载 作者:行者123 更新时间:2023-11-30 01:48:39 24 4
gpt4 key购买 nike

我的小组计划使用 Apollo Gateway 进行联合。因此,我们需要稍微不同地生成我们的模式。

我们可以使用您令人惊叹的库制作类似的东西吗?

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

最佳答案

您想向类型添加一些字段和指令吗?

您可以使用@GraphQLContext将外部方法附加为字段。或者甚至提供一个自定义的 ResolverBuilder,它返回额外的 Resolver(这些稍后会映射到字段)。要添加指令,您可以创建使用 @GraphQLDirective 元注释的注释(请参阅测试示例)。最后,您当然可以为 User 提供自定义 TypeMapper 并完全控制该类型的映射方式。

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

@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
}
}

由于 @GraphQLContextUser 类型现在有一个 review: [Review] 字段(即使 User 类没有该字段)。

关于java - 如何生成与 java 联合的 graphql 模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56881128/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com