我们目前正在努力从整体中争夺较小的服务。我们的域名与票务系统非常相似。我们决定从域的取消过程开始。

我们的取消服务具有一个简单的终结点“Cancel”,其中包含票证的ID。在内部,我们检索id,执行一些与取消有关的操作,并更新商店中实体的状态。从商店的角度来看,已取消票和实时票之间的唯一区别是一些属性。

根据我的阅读,PATCH似乎是在这种情况下使用的正确动词,因为它仅更新资源中的一个简单属性。

PATCH /api/tickets/{id}
Payload {isCancelled: true}

但是isCancelled不是实体中的实际属性。在负载中发送不属于实体的属性是否公平,还是我应该考虑对请求进行建模的其他形式?我不想将整个实体作为有效载荷的一部分发送,因为它很大。

我曾考虑过创建一个新资源CancelledTickets,但是在我们的域中,我们永远不需要在已取消票证上进行GET操作。因此,无需创建新资源。

最佳答案

公开资源的GET接口(interface)不是强制性的。

例如使用

PUT /api/tickets/{id}/actions/cancel

提交取消请求。我选择PUT,因为实际上只有一个取消请求。

希望对您有所帮助。

10-05 23:11
查看更多