试图理解幂等和安全方法的核心概念,但我没有明白。根据我的分析
Http方法分类如下。
帮助我理解更多细节w.r.t服务器端HTTP方法的内部机制以及安全性与幂等的不同
除资源修改和产品相同结果外,是否还有其他特征可用于描述幂等和安全方法。
答案 0 :(得分:1)
帮助我理解更多细节w.r.t服务器端HTTP方法的内部机制以及安全性与幂等的不同
safe和idempotent都描述了处理请求的语义。
如果请求方法的定义语义基本上是只读的,则被视为“安全”;即,由于将安全方法应用于目标资源,客户端不会请求,也不会期望源服务器上的任何状态更改。
安全方法是cqrs意义上的查询 - 它们不会改变任何内容,它们通常包括读取资源状态,但不包括资源状态的修改。
安全请求处理使资源处于相同状态,因此安全方法也必然是幂等的。
如果使用该方法对服务器的多个相同请求的预期效果与单个此类请求的效果相同,则请求方法被视为“幂等”。
幂等请求处理意味着如果客户端发送请求但没有得到答案,客户端可以重复请求。
幂等请求处理基本上意味着服务器仅从请求计算资源的最终状态(不考虑资源的当前状态)。第二次处理消息时,将计算并应用相同的新状态。
这大致类似于分配值。
// the previous value of x was 10, say
set(x, 7) // and now the value of x is 7
set(x, 7) // and now the value of x is still 7
在HTTP中,方法PUT和DELETE被定义为具有幂等语义。注意这些方法的共同点:客户端知道资源的最终状态应该是什么,并要求服务器实现它。
如果您对请求的处理类似于
// the previous value of x was 10, say
increment(x, 7) // and now the value of x is 17
increment(x, 7) // and now the value of x is 24
那么你对请求的处理并不是幂等的。
请注意,语义在这里很重要。这是Fielding had to say in 2002
HTTP不会尝试要求GET的结果是安全的。它的作用是要求操作的语义是安全的,因此它是实现的错误,而不是接口或接口的用户,如果发生任何导致财产损失的结果(金钱,BTW,为了这个定义,它被认为是财产。)