RESTFul service架构的安全性和幂等性

我们知道RestFul service架构基于http协议的,所有的请求都需要http来完成。 Http有两个非常重要的特性 安全性和幂等性。下面来解释一下这两个特性

安全性

安全性是指访问资源的时候资源本身不会发生改变,也就是资源是安全的。举个例子,使用get操作去获取一个资源,无论如何也不会引起资源本身发生改变,也不会引起服务器状态的改变。 用户可以放心的对uri进行get操作,而不会对服务器造成任何破坏。当然,安全性只是一个承诺,是否具备安全性完全要靠rest本身的实现。如果服务本身设计是有问题的,使用get操作也会破坏服务器状态。比如,使用get方法去delete一个资源: Get: http://server/resource/account/delete  我们在做rest设计的时候应该避免这样的设计。  

支持安全性的http方法有: Get, Head

幂等性

幂等性是一个数学概念,数学上的解释为   f(x) = f(f(x))

http的幂等性是指,对同一个资源进行一次或者多次操作,最终资源的状态都是一样的。 比如我们要修改一个用户的年龄,当客户端向服务器发送一次put请求之后,处于种种原因没有收到回复,客户端就可以再次向服务器发送同样的请求,不会影响操作结果。 一个反向例子: 加入一个公司有很多员工,每个员工都有工龄,我们要设计一个增加员工工龄的api,方法是put, 每调用一次这个api就让员工的工龄增加1,这样做是不对的。

支持幂等性的http方法有: Put, Delete,

Post既不是安全的也不是幂等的

扫描二维码关注公众号,回复: 397952 查看本文章

猜你喜欢

转载自gaoch69999.iteye.com/blog/2257859