了解了不安全的非幂等操作带来的问题,我们也有必要强调对于 HTTP 请求的规范。
HTTP 语义其实已经告诉了我们 GET、 POST、 PUT、 DELETE 代表的实际意义,但大多数项目依旧只是用了 GET 和 POST,虽然我们知道语义化只是口头上的声明,至于实际请求的影响是由 Web 服务端程序决定的,但这样做这意味着放弃了通过区分请求方法来决定操作类型,这会在逻辑代码中造成过于繁杂的验证机制,以确保非幂等操作没有产生副作用,这对于逐渐复杂的项目的维护产生了严重的困扰。
当我们确保每一个请求类型符合其语义,我们仅仅需要区分操作的幂等性,即可省去不必要的验证机制。比如只要是幂等操作就可以放心的发出请求,对于非幂等操作单独做验证即可。
同样的,在项目中,完全去掉非幂等操作根本不可能,但我们需要尽量去掉不必要的非幂等操作,来减少不必要的麻烦。