В моем приложении 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?