HTTP PUT过滤仍然是幂等的吗?

时间:2015-12-13 23:13:39

标签: rest http put

我正在进行一项宁静的服务,我不确定我所做的是否是有效的HTTP。我理解如何使用以下HTTP方法:GET,DELETE和POST,但是在支持PUT时,我不太确定。我理解PUT是幂等的,但如果我使用过滤怎么办?

为清楚起见,如果您要使用我的服务,您可以:

GET /User

列出所有用户。

GET /User/1

哪个会获得ID为1的用户。

POST /User

这将创建一个新用户。

PUT /User/2

将创建ID为2的新用户,如果用户已存在,则将更新用户。

我开始努力的地方是我想要在PUT请求上实现过滤。例如,我允许:

PUT /User?FirstName=Andrew&LastName=Schools

这将更新具有Andrew的FirstName和SchoolsName的资源。此外,您还可以:

PUT /User?status=1

将使用请求正文中的内容更新状态为1的任何用户。

我的问题是,因为我在PUT上启用过滤,这仍然是幂等的吗?我最初的想法是否定的,因为第一次使用上面的过滤器进行PUT时,这可能会改变同一个精确过滤器在后续PUT中找到的内容,因此,它不是幂等的。如果上述陈述确实为真,那么在POST中这个功能会更好吗?

1 个答案:

答案 0 :(得分:0)

我没有看到问题。与资源的最终状态相关的是什么。如果您应用PUT两次,并且在第二个请求中,过滤器识别的资源较少或没有,它是否会更改您想要修改的资源的状态?