我们正在实施CRUD接口来管理带有SOAP消息的实体。允许部分更新实体的良好做法是什么?这意味着客户端可以只更新实体的某些属性,而无需发布整个实体?对于每个属性更新,是否有更通用的方法比不同的方法?
答案 0 :(得分:0)
HTTP Patch可用于部分更新,仅发送要更改的对象的字段。有关部分更新的有趣讨论here。
我说确保部分更新为idempotent更为重要,即请求中的相同更新字段会导致资源的相同结束状态。因此,如果您有内部逻辑,则根据正在更新的另一个可能要查看的资源属性的值来确定资源属性的状态。例如如果资源作为一个整体有关于何时更新部分但未指定其他部分的规则(某些属性的默认值?),则可能会根据资源的当前状态导致不同的结果。
如果整个资源只是一组不相关的属性,那么部分更新是有意义的,但是如果某些属性之间存在依赖关系,而某些属性得到更新而其他属性没有,那么资源的最终状态必须是幂等的。例如更新地址但不更新电话号码是否有意义?如果电话号码是固定电话并且地址得到更新,电话号码会怎样?它被设置为null吗?反之亦然。因此,在进行部分更新时,可能值得进行分区'允许的部分基于正在更新的域。