【发布时间】:2018-06-08 21:31:22
【问题描述】:
我们有一个“RESTful”端点,它返回一个新创建的存储令牌。生成令牌所需的所有信息都包含在不记名令牌中,因此请求不需要正文。该请求不会导致数据库更改,因为未存储令牌。后续请求(没有任何干预数据库更改)在响应中提供不同的令牌。正确的方法是 POST 还是 GET?
一个提案是 GET 和 GET/id,其中 id 是在令牌创建过程中使用的资源的标识符,而不是令牌本身。替代方法是 POST。
既然有啤酒依赖于结果,我会尽量不要太明显地偏袒任何一方。诸如来自 IETF 的 GET 和 POST 的规则以及在 https://restfulapi.net/http-methods/#get 对这两种方法的讨论之类的资源不足以说服任何一方,部分原因是对于 GET 是否适合返回不同的东西存在分歧如果请求之间的底层资源没有改变,以及“我们生成的随机令牌”在未存储在数据库中时是否是新的“资源”。
【问题讨论】: