注销请求应该设计为 GET 还是 POST?

use*_*155 4 http http-method

我正在实施一些休息服务。根据 SDK,我必须调用的第一个服务是用于登录的 http POST 请求。输入是我的用户的凭据,输出是我的会话 ID。

要注销,我还必须发出 http POST 请求,但请求正文中没有任何数据/有效负载。相反,必须在包含会话 ID 的请求中添加标头字段。

我有点困惑,这是 loggoff 请求的正确设计吗,还是应该使用 GET 方法?更一般地说,没有输入(查询参数和请求标头除外)且没有输出的请求应该是 GET、POST 还是其他内容?为什么这样或为什么不呢?

小智 6

根据RFC2616 GET 是一种“安全方法”

不应具有采取检索以外的操作的意义

注销,对我来说似乎不是一个安全的操作,所以 GET 不适合。

因此它应该是一个 POST。似乎没有其他 HTTP 动词在语义上是合适的。