我正在进行一项宁静的服务,我不确定我所做的是否是有效的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中这个功能会更好吗?
答案 0 :(得分:0)
我没有看到问题。与资源的最终状态相关的是什么。如果您应用PUT两次,并且在第二个请求中,过滤器识别的资源较少或没有,它是否会更改您想要修改的资源的状态?