REST本身不是架构,只是一种架构风格,理解它的时候要参考这个架构风格出现的环境所施加的约束条件。
REST规范
- 强调HTTP应当以资源为中心,并且规范了资源URI的风格;
- 规范了HTTP请求动作(PUT,POST等)的使用,具有对应的语义。
REST的优点
- 对搜索引擎更优化
- 设计规范合理,好扩展,REST目的是“建立十年内不会过时的软件系统架构”
- 风格统一,减少了团队沟通和学习的成本,代码一致性好
- URL具有很强可读性的,具有自描述性
- 资源描述与视图的松耦合
- 可提供OpenAPI,便于第三方系统集成,提高互操作性
- 如果提供无状态的服务接口,可提高应用的水平扩展性
总结:REST既要保证服务端演化,又要保证客户端演化,同时还要保证应用本身的演化,这实在是一个极具抽象能力的方案。
REST的缺点
- 针对uri的定义变得复杂了
- 所有的操作将要被抽象为GET、POST、PUT、DELETE
REST的基本概念
资源(Resource):在REST中,资源可以简单的理解为URI,表示一个网络实体。比如,/users/1/name,对应id=1的用户的属性name。既然资源是URI,就会具有以下特征:名词,代表一个资源;它对应唯一的一个资源,是资源的地址。
表现层(Representation):资源是做一个具体的实体信息,他可以有多种的展现方式。而把实体展现出来就是表现层,例如一个txt文本信息,他可以输出成html、json、xml等格式,一个图片他可以jpg、png等方式展现,这个就是表现层的意思。
URI确定一个资源,但是如何确定它的具体表现形式呢?应该在HTTP请求的头信息中用Accept和Content-Type字段指定,这两个字段才是对"表现层"的描述。
状态转化(State Transfer):访问一个网站,就代表了客户端和服务器的一个互动过程。在这个过程中,肯定涉及到数据和状态的变化。而HTTP协议是无状态的,那么这些状态肯定保存在服务器端,所以如果客户端想要通知服务器端改变数据和状态的变化,肯定要通过某种方式来通知它。
客户端能通知服务器端的手段,只能是HTTP协议。具体来说,就是HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。
REST CRUD的用法
POST:用来增加资源
PUT:用来修改资源。PUT是幂等方法,POST不是。所以PUT用于更新、POST用于新增比较合适。
DELETE:用来上次资源
GET:用来查询资源
REST的架构图
当REST架构的约束条件作为一个整体应用时,将生成一个可以扩展到大量客户端的应用程序。它还降低了客户端和服务器之间的交互延迟。统一界面简化了整个系统架构,改进了子系统之间交互的可见性。REST简化了客户端和服务器的实现,而且对于使用REST开发的应用程序更加容易扩展。
REST的扩展性
REST的level分级
注意:有些防火墙会挡住HTTP PUT和DELETE请求要绕过这个限制,客户端需要把实际的PUT和DELETE请求通过 POST 请求穿透过来。RESTful 服务则要负责在收到的 POST 请求中找到原始的 HTTP 方法并还原。
REST面试问题(难点)
对于用户登录和用户退出这两个业务需求,REST指导下的架构和设计如何满足
批量的删除、修改、新增如何满足
版权声明:本文为博主原创文章,未经博主允许不得转载。
: » 详细解读REST风格架构图、扩展性和level分级
原创文章,作者:carmelaweatherly,如若转载,请注明出处:https://blog.ytso.com/251470.html