假设我有一个名为“Session”的资源。客户端将调用PUT来创建并开始新会话。当客户端完成会话后,它将不再可访问,但应该因历史/问责原因而持续存在。
要结束会话,发出一个DELETE请求会更合适吗,这个请求似乎在语义上更接近于所需的效果,或者POST,因为资源实际上并未被永久删除?
答案 0 :(得分:12)
这里的问题是:请求是idempotent吗?如果您执行两次相同的请求,它是否有副作用?就像你订购一篇文章一样,两次执行订单请求会得到两篇文章。
在这种情况下,POST
是您想要的方法。如果没有,那么您需要PUT
或DELETE
。
由于您似乎没有删除会话,只更改其状态,PUT
将是更好的方法,因为这意味着资源被更改,而不是删除,这在您的情况下情况下。
编辑:
如果资源似乎已从客户端删除,DELETE
似乎更合适。如何在后面实现事情对客户来说无关紧要。
答案 1 :(得分:0)
POST请求在这里会更好,因为您实际上并没有删除session
。 POST请求通常用于更改对象的状态。我认为这是你的情况。