Jon*_*ton 8 rest post get http
我们有一个"RESTful"端点,它返回一个新创建的存储令牌.生成令牌所需的所有信息都包含在承载令牌中,因此请求不需要正文.该请求不会导致数据库更改,因为未存储令牌.后续请求在没有任何中间数据库更改的情况下,在响应中提供不同的令牌.什么是正确的方法,POST或GET?
一个提议是GET和GET/id,其中id是令牌创建过程中使用的资源的标识符,而不是令牌本身.替代方案是POST.
因为结果是啤酒,所以我会尽量不要偏袒任何一方.来自IETF的GET和POST规则以及https://restfulapi.net/http-methods/#get上的两种方法的讨论等资源不足以说服任何一方,部分原因是由于它是否合适的不同如果底层资源在请求之间没有变化,并且"我们生成的随机令牌"在未存储在数据库中时是否是新的"资源",则GET返回不同的内容.
您绝对应该使用POST生成令牌.
GET 用于检索现有资源的集合或由提供的路径参数标识的特定资源.
在这种情况下,您根本不是在服务器上生成资源.您不存储任何数据,以后无需检索任何数据.所以没有代表国家转移.
但是,由于您创建的令牌在每次调用时都会有所不同(iat并exp声明,假设您使用的是JWT)并且不应由任何中介缓存.HTTP代理将POST请求视为非幂等,使其成为令牌发布端点的最佳选择.
另请参阅例如OAuth2令牌端点强制POST.