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

Should a logoff request be designed as GET or POST?

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

要注销,我还必须发出 http POST 请求,但请求 body 中没有任何 data/payload。相反,必须将 header 字段添加到包含 session id 的请求中。

我有点纠结,这是注销请求的正确设计,还是应该改用 GET 方法?更一般地说,没有输入(查询参数和请求 headers 除外)且没有输出的请求应该是 GET、POST 还是其他?为什么会或为什么不会?

根据 RFC2616 GET 是 "safe method" 即

SHOULD NOT have the significance of taking an action other than retrieval

注销,对我来说似乎不是一个安全的操作,因此不适合使用 GET。

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