我们目前正在努力从整体中争夺较小的服务。我们的域名与票务系统非常相似。我们决定从域的取消过程开始。
我们的取消服务具有一个简单的终结点“Cancel”,其中包含票证的ID。在内部,我们检索id,执行一些与取消有关的操作,并更新商店中实体的状态。从商店的角度来看,已取消票和实时票之间的唯一区别是一些属性。
根据我的阅读,PATCH似乎是在这种情况下使用的正确动词,因为它仅更新资源中的一个简单属性。
PATCH /api/tickets/{id}
Payload {isCancelled: true}
但是isCancelled不是实体中的实际属性。在负载中发送不属于实体的属性是否公平,还是我应该考虑对请求进行建模的其他形式?我不想将整个实体作为有效载荷的一部分发送,因为它很大。
我曾考虑过创建一个新资源CancelledTickets,但是在我们的域中,我们永远不需要在已取消票证上进行GET操作。因此,无需创建新资源。
最佳答案
公开资源的GET
接口(interface)不是强制性的。
例如使用
PUT /api/tickets/{id}/actions/cancel
提交取消请求。我选择
PUT
,因为实际上只有一个取消请求。希望对您有所帮助。