我可以用@graphqlquery解析模型中没有的字段吗

tquggr8v  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(347)

我们使用graphqlspqr从java后端api和模型生成graphql模式。
今天以获取产品为例,我们注解了如下方法:

  1. @GraphQLQuery
  2. List<Product> allProducts() {...}

我们希望避免创建新的端点来检索产品中的额外字段。
有没有办法为不属于模型的字段定义解析器((是否注解)
作为一个例子,让我们假设一个产品的java模型+两个端点:

  1. class Product {
  2. String id;
  3. String name;
  4. }
  5. class Frame {
  6. String id;
  7. }
  8. // and some kind of relationship between the two
  9. class ProductToFrame {
  10. String productId;
  11. String frameId
  12. }
  13. List<Product> allProducts();
  14. List<Frame> getFramesByProductId(String productId);

我们希望graphql模式如下所示:

  1. type Product {
  2. id: String
  3. name: String
  4. frames: [Frame]
  5. }
  6. type Frame {
  7. id: String
  8. }
06odsfpq

06odsfpq1#

你所需要的就是这样的东西(例如,在你现有的 allProducts() 方法:

  1. @GraphQLQuery
  2. public List<Frame> frames(@GraphQLContext Product product) {
  3. return getFramesByProductId(product.getId());
  4. }

这个 frames 字段将附加到其上下文 Product 类型。或者换言之,就是 Product 类型将获得一个名为 frames ,根据需要。
确保您查看了spqr中的测试。它们可以作为大多数功能的展示。

相关问题