REST个人学习总结

什么是REST

Representational State Transfer

表征状态转移(Representational State Transfer, REST)是一种软件体系结构风格,由用于创建可伸缩web服务的指导原则和最佳实践组成。REST是应用于分布式超媒体系统中组件设计的一组协调约束,这些约束可以导致更高的性能和可维护性架构。
Representational (表现层)
 State Transfer(状态转移):通过HTTP动词实现。(GET / POST / PUT / DELETE)
RESTful 是一组软件体系结构的风格 / RESTful 是一组约束,如果你想要遵守它的话
1.分布式超媒体系统的表征性状态转移架构风格 (混合风格)
2.由应用于体系结构中的元素的约束集组成,是一组约束

什么是软件架构 – 软件体系结构

1.具有抽象概念的软件系统元素/组件。
2.描述了系统的操作行为。
3.定义了组件间的基本关系。

软件架构的层级

1.抽象级别 – 软件系统元素级别 – 体系架构级别
2.操作阶段:启动、初始化、正常处理、重新初始化、关闭等

软件架构的组成

1.组件 数据转换器、数据处理器
2.连接器 数据传输器、通信器、调节器、分配器
3.数据 信息元素

RESTful架构风格的设计要求

1.简单的、通用的
2.可扩展的、灵活的
3.基于分布式超媒体的
4.达到互联网规模 == 基于万维网,大数据量

RESTful架构风格的设计 三个假设

假设I:WWW体系结构背后的设计原理可以通过一种体系结构样式来描述,该体系结构样式由应用于Web体系结构中的元素的约束集组成。
假设II:可以将约束添加到WWW体系结构样式中,以获得更好地反映现代Web体系结构所需属性的新混合样式。
假设III:可以将修改Web体系结构的提议与更新的WWW体系结构样式进行比较,并在部署之前分析冲突。

REST主要约束

只要满足了以下约束的架构,都可以成为REST风格架构
1.null约束是所有约束的父级,也就是说REST约束集从零开始,通过已有的架构分析以及当下面临的web环境问题和对未来的架构期望,逐步完善而形成
2.客户端 - 服务器 约束,架构必须满足客服端(请求)-服务器(响应)的模式
3.无状态约束 , 通信之间保持无状态。这使得架构的组件间的可见性、架构的可靠性以及可扩展性得到改善。加强了分离,明确的分工简化了交互。
4.缓存约束。缓存约束的存在可以进一步提高性能。并且在可扩展性方面具有优势
5.统一接口。将REST架构风格与其他基于网络的风格区分开来的核心功能是强调组件之间的统一接口。
6.分层系统。分层系统虽然增加了数据处理的开销,但极大的提高了可扩展性。
REST个人学习总结

REST重要的 统一接口约束

1.每个资源都拥有一个资源标识。每个资源的资源标识可以用来唯一地标明该资源。
2.消息的自描述性。在REST系统中所传递的消息需要能够提供自身如何被处理的足够信息。例如该消息所使用的MIME类型,是否可以被缓存等。
3.资源的自描述性。一个REST系统所返回的资源需要能够描述自身,并提供足够的用于操作该资源的信息,如如何对资源进行添加,删除以及修改等操作。也就是说,一个典型的REST服务不需要额外的文档对如何操作资源进行说明。
4.HATEOAS(Hypermedia as the engine of application state // 超媒体作为应用程序状态的引擎)。即客户只可以通过服务端所返回各结果中所包含的信息来得到下一步操作所需要的信息,如到底是向哪个URL发送请求等。也就是说,一个典型的REST服务不需要额外的文档标示通过哪些URL访问特定类型的资源,而是通过服务端返回的响应来标示到底能在该资源上执行什么样的操作。一个REST服务的客户端也不需要知道任何有关哪里有什么样的资源这种信息。
下图为一个完整资源的表示,比较形象的说明RESTful接口风格的约束。只要满足了上述四个约束的API接口语义,就可以称为RESTful 风格的接口
REST个人学习总结
也可以通过这个链接,了解资源的url设计,对我们日常的开发也很有帮助。整篇文章也详解了什么是RESTful架构风格。 http://www.cnblogs.com/loveis715/p/4669091.html

参考文章
http://www.cnblogs.com/loveis715/p/4669091.html
https://www.cnblogs.com/wang-yaz/p/9237981.html
https://blog.csdn.net/dc2222333/article/details/77877736

博士论文链接
https://blog.csdn.net/mypages/article/details/83325223 摘录版 – free
https://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm 英文原文 free
https://download.csdn.net/download/shuibaiz/4502338 下载地址 – 需要12分

论文读解
https://blog.csdn.net/weixin_43740223/article/details/89002804