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