Сложность GraphQL для поддержки обновления / создания стоит? - PullRequest
0 голосов
/ 01 июля 2019

В моем приложении Spring имеется относительно сложная иерархическая модель данных, и мне нужно запросить ее, а также обновить все сущности, разрешив клиенту передать измененную сущность на сервер .

Использование GraphQL для запросов точно решает мои потребности, но для обеспечения возможности обновления и создания, однако, мне нужно дублировать все мои сущности, так как файлы * .graphqls не будут поддерживать использование элементов «type» в качестве элементов «input».

Для вновь созданного элемента 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 не позволяет использовать тип каквведите , и мне нужно будет сделать это и для многих других организаций.

Есть ли какое-либо другое решение, или люди идут на все, чтобы принять дополнительную сложность, или выпросто переключитесь на REST для операций POST / PUT и используйте только GraphQL для GET?

...