作者:手打丸子
链接:https://www.zhihu.com/question/28557115/answer/142289037
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
restful是种接口设计风格,在分布式系统架构下特别重要。
rest-representation state transfer
你的接口必须有以下特性(以HTTP协议为例,当然符合rest的不止这一种):
1.可描述性(representation):你可以准确的描述你的接口;包括接口地址(uri)、操作(PUT/GET/POST/DELETE)、资源项等(不止这些,但就是这个意思);
2.有状态的(state):你的接口调用后会返回调用结果;400、500等返回状态,来统一标识这个接口的运行状态,并且状态需要符合规范;
3.可转移(transfer):你的调用可以转移到另外的服务器上;这就要求你的服务端不保存客户端状态;你在分布式状态下调用哪一台服务器都是一样的效果,这就要求你的服务端必须不能维护客户端请求的状态,比如你调用服务器A和服务器B都是一样结果,或者调用服务器A两次都会得到一样的结果;
反证补充:
1.可描述性:试想,你都无法准确描述你的接口,你上哪里调用它;
2.有状态的:试想,你的接口没个规范的状态返回调用结果,在那么多接口的情况下,你咋知道调用结果如何;
3.可转移:试想,你的服务器A保存了客户端甲的状态,但是服务器B没有;这时,客户端甲发请求给服务器A/B完全有可能得到不同的结果,而明明客户端甲发的请求是一样的,并且是同一接口;在分布式下,经常会做负载均衡之类的,用户甲发的请求被谁处理完全是随机的。
注:以上描述不严谨,仅为通俗易懂;可能理解有误,有不当之处请指出。
网友评论