GraphQL支持更新/创建的复杂性值得吗?

时间:2019-07-01 13:30:42

标签: java spring rest graphql mutation

我的Spring应用程序中有一个相对复杂的分层数据模型,我需要查询它以及通过允许客户端将更改后的实体传递给服务器来更新所有实体。 / p>

使用GraphQL进行查询可以完全解决我的需求,但是要启用更新和创建功能,我需要复制所有实体,因为* .graphqls文件将不支持使用“类型”元素作为“输入”元素。

对于新创建的Input元素,我还需要定义一个与之匹配的Java对象。

对于我最终遇到的查询

Portfolio.java

@Entity
public class Portfolio {

   @Id
   private int id;

   private String name;

   ....

}

和Portfolio.graphqls

type Portfolio {
    id: ID!
    name: String

    ....
}

但是对于更新,我最终还是得到

Portfolio.java

@Entity
public class Portfolio {

   @Id
   private int id;

   private String name;

   ....

}

PortfolioInput.java

@Entity
public class PortfolioInput {

   @Id
   private int id;

   private String name;

   ....

}

portfolio.graphqls

type Portfolio {
    id: ID!
    name: String

    ....
}


input PortfolioInput {
    id: ID!
    name: String

    ....
}

type PortfolioMutation{
    updatePortfolio(input: PortfolioInput):Portfolio
}

我的问题是,我现在需要使 4个实体与其字段保持同步,只是因为GraphQL不允许使用类型作为输入,而我d还需要对许多其他实体执行此操作。

还有其他解决方案吗,还是人们付出了更多的努力并接受了额外的复杂性,或者您只是切换到REST进行POST / PUT操作,而仅使用GraphQL进行GET?

0 个答案:

没有答案