- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个有点复杂的域对象,如下所示:
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;
}
然后,终点本质上会将这些操作中的每一个操作模块化(如果 Responsible_to_add.length > 0,则处理职责的添加)。
我的问题与模式更相关 - 我觉得这很“hacky”。我希望有一种方法可以仅对 User 对象使用部分更新,而不是使用带有自定义 UpdateUser 对象的自定义端点。是否有更简洁的方法来处理部分更新,包括一对多关系、多对多关系等。
我正在使用 Spring REST API 库 + Java,以防有帮助。
编辑
我认为这部分也很重要 - 我可以轻松地将删除/添加对象到用户中的每个集合的责任委托(delegate)给不同的端点(我实际上已经有了),但我想要应用程序有一个端点这样我们就可以通过事务处理一切。
最佳答案
Is there a cleaner way to handle a partial update that includes one-to-many relationships, many-to-many relationships, etc.
很难说——这取决于工作的哪一部分给你带来了麻烦。
PATCH
和类似的 PUT
表达文档编辑语义 - 在这两种情况下,我们都请求服务器使其某些资源的表示与客户端的表示相匹配.
我 GET/foo
然后你又给我发送了一个 1GB 的 json 文档。我将该文档加载到 json 编辑器中,并修复一两个拼写错误。因为更改很小,我可能想向您发送 PATCH 请求,而不是发回 1GB 的 json。这意味着我将在您和我理解的某种媒体类型中创建我的编辑的表示,并将该表示发送给您。
application/json-patch+json可能是一个很好的起点。
使用标准的好处是,很多工作已经为您完成。但是,如果您愿意的话,您可以设计自己的补丁文档架构,然后发布它,任何理解您的架构的客户端都可以与您进行互操作。
请注意,这一切都发生在“通过网络传输文档”领域。这里发生的任何事情都不意味着客户端知道存在对象模型、关系数据库表或任何类似的实现细节。这纯粹是服务器的问题需要解决。
当然,问题的第二部分现在是:我在这里,一台服务器,其中有一个补丁文档,并且我的关系数据库中有 110 个表可能需要更新。这是怎么发生的?正如约翰指出的那样,这是必须实现的工作。在 Java/Spring/Hibernate 世界中,一个可能的答案是,您可以通过 ORM 加载当前的服务器端状态,使用补丁来引导对本地内存数据结构的编辑,然后要求您的 ORM 找出什么需要运行语句。
关于java - REST API 部分匹配模式 - 对象具有多对多和一对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56483852/
这是代码片段。 请说出这种用小内存存储大数据的算法是什么。 public static void main(String[] args) { long longValue = 21474836
所以我使用 imap 从 gmail 和 outlook 接收电子邮件。 Gmail 像这样编码 =?UTF-8?B?UmU6IM69zq3OvyDOtc68zrHOuc67IG5ldyBlbWFpb
很久以前就学会了 C 代码;想用 Scheme 尝试一些新的和不同的东西。我正在尝试制作一个接受两个参数并返回两者中较大者的过程,例如 (define (larger x y) (if (> x
Azure 恢复服务保管库有两个备份配置选项 - LRS 与 GRS 这是一个有关 Azure 恢复服务保管库的问题。 当其驻留区域发生故障时,如何处理启用异地冗余的恢复服务保管库?如果未为恢复服务启
说,我有以下实体: @Entity public class A { @Id @GeneratedValue private Long id; @Embedded private
我有下一个问题。 我有下一个标准: criteria.add(Restrictions.in("entity.otherEntity", getOtherEntitiesList())); 如果我的
如果这是任何类型的重复,我会提前申请,但我找不到任何可以解决我的具体问题的内容。 这是我的程序: import java.util.Random; public class CarnivalGame{
我目前正在使用golang创建一个聚合管道,在其中使用“$ or”运算符查询文档。 结果是一堆需要分组的未分组文档,这样我就可以进入下一阶段,找到两个数据集之间的交集。 然后将其用于在单独的集合中进行
是否可以在正则表达式中创建 OR 条件。 我正在尝试查找包含此类模式的文件名列表的匹配项 第一个案例 xxxxx-hello.file 或者案例二 xxxx-hello-unasigned.file
该程序只是在用户输入行数时创建菱形的形状,因此它有 6 个 for 循环; 3 个循环创建第一个三角形,3 个循环创建另一个三角形,通过这 2 个三角形和 6 个循环,我们得到了一个菱形,这是整个程序
我有一个像这样的查询字符串 www.google.com?Department=Education & Finance&Department=Health 我有这些 li 标签,它们的查询字符串是这样
我有一个带有静态构造函数的类,我用它来读取 app.config 值。如何使用不同的配置值对类进行单元测试。我正在考虑在不同的应用程序域中运行每个测试,这样我就可以为每个测试执行静态构造函数 - 但我
我正在寻找一个可以容纳多个键的容器,如果我为其中一个键值输入保留值(例如 0),它会被视为“或”搜索。 map, int > myContainer; myContainer.insert(make_
我正在为 Web 应用程序创建数据库,并正在寻找一些建议来对可能具有多种类型的单个实体进行建模,每种类型具有不同的属性。 作为示例,假设我想为“数据源”对象创建一个关系模型。所有数据源都会有一些共享属
(1) =>CREATE TABLE T1(id BIGSERIAL PRIMARY KEY, name TEXT); CREATE TABLE (2) =>INSERT INTO T1 (name)
我不确定在使用别名时如何解决不明确的列引用。 假设有两个表,a 和 b,它们都有一个 name 列。如果我加入这两个表并为结果添加别名,我不知道如何为这两个表引用 name 列。我已经尝试了一些变体,
我的查询是: select * from table where id IN (1,5,4,3,2) 我想要的与这个顺序完全相同,不是从1...5,而是从1,5,4,3,2。我怎样才能做到这一点? 最
我正在使用 C# 代码执行动态生成的 MySQL 查询。抛出异常: CREATE TABLE dump ("@employee_OID" VARCHAR(50)); "{"You have an er
我有日期 2016-03-30T23:59:59.000000+0000。我可以知道它的格式是什么吗?因为如果我使用 yyyy-MM-dd'T'HH:mm:ss.SSS,它会抛出异常 最佳答案 Sim
我有一个示例模式,它的 SQL Fiddle 如下: http://sqlfiddle.com/#!2/6816b/2 这个 fiddle 只是根据 where 子句中的条件查询示例数据库,如下所示:
我是一名优秀的程序员,十分优秀!