【问题标题】:Where Merging two entities falls in Restful way以 Restful 方式合并两个实体的地方
【发布时间】:2015-08-11 19:41:26
【问题描述】:
我必须做以下事情:
将源实体合并到目标实体。源实体和目标实体都属于同一类型。因此,最终结果将是 Source 和 Target 将合并为一个 Target 实体,以便 Target 的所有属性将保持原样,但如果 Target 中的任何属性不存在,它将从 Source 复制。
最终,源将被删除。
我的问题是,以 Restful 方式,今年秋天应该在哪里 - POST / PUT / DELETE,为什么?
或者,它将是多个操作 - PUT / POST 后跟 DELETE?
【问题讨论】:
标签:
asp.net
asp.net-web-api2
restful-architecture
【解决方案1】:
您可以在一个电话中完成。假设目标的唯一 ID 在新实体中保持不变,只需允许:
POST /entities/{targetEntityId}
{
"mergeFrom": "/entities/{sourceEntityId}
}
POST 允许副作用,因此您可以选择在此调用中执行删除操作。或者,您可以选择允许客户端通过要求客户端在 POST 之后调用 DELETE /entities/{sourceEntityId} 来确定是否删除源。
要使用 PUT,您需要客户端进行合并并包含所有值,这可能是不可取的。