浅谈RESTful架构风格

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/dawn_after_dark/article/details/83928063

RESTful

REST (representation state transfer)表述性状态转移。该架构主张服务端维护资源状态,客户端维护会话状态,消除服务端维护客户请求状态的开销,有利于服务器横向扩展和负载均衡。

REST使服务器处于无状态,及服务器仅仅管理资源的状态,会话的状态的需要客户端自己来维持。举个例子,比如我调用远程服务next操作(功能:当前书籍的下一章),这时服务器端必须存有我当前浏览信息,才能使得next操作返回预期的结果。服务器同时要为所有的用户维护这样的信息才能返回正确的下一章内容给相应的用户。
那么能不能我主动告诉服务器我在哪一章呢,这样不就可以使得服务器不必大规模维护这样信息?当前可以,这就是REST思想的核心,客户端这边告诉服务器期望的状态,服务器返回相应的状态即可。也就说服务器不关心具体的处理过程只关系最后的状态。所以上面的例子,客户端可以发送https://www.my.com/article/2,告诉服务器我期望第二页的内容。且慢!那如果客户端希望删除下一章的内容怎么办?按照REST架构风格,同样也是发送上述请求?那服务器如何知道客户端的具体操作意图来完成资源的状态转移呢?这就需要在请求头中添加约定的动作Code。比如HTTP协议中的GET,POST,PUT,DELETE语义。其中GET对应的是查询动作;POST对应的是增加动作;PUT对应的是更新操作;DELETE对应的删除操作。
有了期望的资源状态和操作,就可以使得服务器处于无状态,以满足高并发和动态均衡的需求。

应用

通过SpringCloud Eureka注册中心,服务器可以进行服务注册、续约和下线;客户端可以获取调用方的服务信息。RestTemplate支持JSON格式和HTTP动作语义,给于了REST架构完美支持。

猜你喜欢

转载自blog.csdn.net/dawn_after_dark/article/details/83928063