1

我陷入了 REST 的理论问题。

想象一个简单的产品库存 API。该数据库包含一个引用 a product、 aquantity和 a的动作集合status

我有一个先决条件:我不希望 API 用户操纵状态。状态值可以是reservedconfirmed

首先,我想创建一个产品的预订。这是相应的 URL 路径和 HTTP 方法来表示:

[POST] /products/{product-id}/reservations

这将创建具有状态的运动reserved并返回已创建运动的 id。

现在,我想确认这个预订:

[POST] /reservations/{movement-id}/confirmations

在语义上,在我看来,我创建了一个确认的预订。事实上,我只是改变了运动的状态。

所以,2个问题:

  1. 我的第二个 POST 是幂等的。我无法在 RFC 中找到信息,但是 POST 可以是幂等的吗?
  2. 你有没有更好的方式来表示确认?
4

1 回答 1

1

我会改用 PUT 。例如PUT /reservations/{movement-id}/status "confirmed"

笔记:

您的 POST 是幂等的并不重要,因为您在确认预订 (HATEOAS) 后删除了链接,因此同一预订到达 2 个确认的机会非常低。无论如何,我认为 PUT 更合适。

于 2015-11-03T15:04:32.307 回答