我陷入了REST的理论问题。
想象一下简单的产品库存API。该数据库包含一组引用product
,quantity
和status
的动作。
我有一个先决条件:我不希望API用户操纵状态。状态值可以是reserved
或confirmed
。
首先,我想创建一个产品预订。以下是相应的URL路径和HTTP方法来表示:
[POST] /products/{product-id}/reservations
这将创建状态为reserved
的动作,并返回已创建动作的ID。
现在,我想确认一下这个预订:
[POST] /reservations/{movement-id}/confirmations
以语义的方式,在我看来,我创建了一个确认的预订。事实上,我只是改变了运动的状态。
所以,2个问题:
答案 0 :(得分:1)
我会改用PUT。例如PUT /reservations/{movement-id}/status "confirmed"
。
请注意:
您的POST是幂等的并不重要,因为您在确认预订(HATEOAS)后删除了链接,因此对于同一预订,2次确认的机会非常低。无论如何,我认为PUT更适合。