rest - HTTP 方法 POST 一定是幂等的吗?

标签 rest http post idempotent

我陷入了 REST 的理论问题。

想象一个简单的产品库存 API。该数据库包含一个引用产品数量状态的移动集合。

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

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

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

这将创建状态为 reserved 的 movement 并返回所创建 movement 的 id。

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

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

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

那么,2 个问题:

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

最佳答案

我会改用 PUT。例如PUT/reservations/{movement-id}/status“已确认”

注意:

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

关于rest - HTTP 方法 POST 一定是幂等的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33502097/

相关文章:

rest - 在用 XQuery 编写的 REST 扩展 GET 中输出内容类型和其他 header

java - 我的 Servlet 和 @FormDataParam Jersey 有问题

django - Flex HTTPservice 和 POST,发送文件?

javascript - 如何向 PHP 元素发送 post 请求

json - 使用 JSON/HTTP/REST 接口(interface)查询 MongoDB

rest - 在 PhpStorm 中调试剩余部分

api - 使用不记名 token 进行身份验证(≠授权)

java - 集群环境中 JMS 主题的 HTTP 使用者

java - Java reSTLet 中未传递的 post 参数的值?

c# - 带参数的文件上传?