我有一个像这样的有点复杂的域对象:
public class User implements Serializable {
private Long id;
private String firstName;
private String lastName;
private Boolean isActive;
private List<Company> comapnies;
private List<Department> departments;
private List<Responsibility> responsibilities;
private List<ContactInformation> contactInformation;
}
我想在我的 API 中有一个端点,允许更新任何这些属性——我可以添加一个部门、一个职责、删除一个公司等。
由于网络延迟,我不想每次都进行完整的对象更新。所以我想做一个部分更新(PATCH)
现在,我有一个名为“UpdateUser”的自定义数据对象,该对象如下所示:
public class UpdateUser implements Serializable {
private User user;
private List<Company> comapnies_to_add;
private List<Company> comapnies_to_remove;
private List<Department> departments_to_add;
private List<Department> departments_to_remove;
private List<Responsibility> responsibilities_to_add;
private List<Responsibility> responsibilities_to_remove;
private List<ContactInformation> contactInformation_to_add;
private List<ContactInformation> contactInformation_to_remove;
}
然后终点将基本上模块化这些操作中的每一个(如果 responsibilities_to_add.length > 0,处理责任的添加)。
我的问题与模式更相关——我觉得这是“hacky”。我希望有一种方法可以只对 User 对象使用部分更新,而不是使用带有自定义 UpdateUser 对象的自定义端点。有没有一种更简洁的方法来处理包括一对多关系、多对多关系等的部分更新?
我正在使用 Spring REST API 库 + Java,以防有帮助。
编辑
我想这部分也很重要——我可以轻松地将删除/添加对象的责任委托给用户中的每个集合到不同的端点(我实际上已经有了),但我想要应用程序的单一端点,所以我们可以以交易方式处理一切。
呼如林
PIPIONE
相关分类