restful什么意思(什么是一个RESTFul的架构?)
100次浏览 发布时间:2024-12-03 08:08:27
RESTful架构是目前最为流行的一种互联网架构风格。简单的说RESTful是一种架构的约束规范,凡是符合这种规范的架构都可以被称为是RESTful架构。它以其独特的优势,被很多大厂所使用。下面我们就来介绍一下关于RestFul架构风格
什么是RESTful
RESTful是(Representational state transfer)的简称,中文意思为,表述性状态转移,也被称为是表现层状态转化,而这里所谓的资源就是指在网络中能够访问到的具体的数据内容,可以是一个HTML页面,也可以是JS文件,或者是一张图片等等这些都可以被称为是数据资源。
我们知道,在网络上这些资源都可以用一个URL来访问到,而每个资源都有一个自己唯一的URL(统一资源标识符)。当我们访问这些资源的时候只需要根据其对应的URL进行访问即可。
而所谓的表述性,就是对资源的一种外在描述,也就是说通过什么样的方式将上面我们提到的资源所展示出来,所以也被称为是表现层特性。REST资源在网络上可以以任何形式去展示,例如txt、html、xml、json等等。我们可以通过任何的形式将其展示出来。
而状态则表示,在使用资源的时候的状态,例如对于有些资源访问的时候会出现500、400、404这样的状态,
转化则表示,REST风格的资源数据,其表述形式可以由一个应用转移到另一个应用。
试想,如果客户端想要获取到服务器端的资源,必须要通过某种表现手段让服务器端的数据状态发生变化,而这种变化是体现在表现层上的。也就是说当你在页面上点击一个按钮,要使得服务器端的数据发生变化就必须要要建立在表现层将服务端的状态变化进行转换。而客户端实现这种变化的手段只能是通过HTTP协议的调用。
简单来讲其实就是用到了HTTP的四种基础的调用方法,GET、POST、PUT、DELETE。
- GET:用来获取服务器资源
- POST:用来新建服务器资源
- PUT:用来修改服务器资源
- DELETE:用来删除服务器资源
如上图所示,其实RESTful的四种基本操作就对应了业务层的CRUD。既然是这些操作都是围绕着资源的增删改查来完成的,那它一定有其操作的规范,下面我们就来看看关于RESTful的规范也约束都有哪些?
关于RESTful的约束与规范?
RESTful架构的核心规范就是:统一接口调用。什么是统一接口调用呢?其包含了如下的四层意思。
- 在服务器上的每个资源都有自己唯一的标识符来进行标识。
- 消息自描述性,所谓的消息自描述性,就是客户端向服务端发送消息的时候,可以明确的告诉服务端要请求什么样的资源,例如发送的四大基本请求方式。
- 资源自描述性,所谓的资源自描述性,就是服务端向客户端响应消息的时候,会告诉客户端是什么消息,并且以什么样的方式去处理。
- HATEOAS Hypermedia As The Engine Of Application State(超媒体作为应用状态引擎),相信这个名词有很多人也是第一次见到,它的作用就是将它与其他的网络应用程序的体系结构进行区分。也就是说REST的客户端几乎是感觉不到与服务器和应用的交互,使得客户端能更好的完成自适应。
如何设计RESTFul Web服务
- REST强调的组件之间统一接口调用也就是上上面提到的使用HTTP作为通信协议,而HTTP作为应用层通信协议,它定义了客户端与服务端的表述形式,而HTTP协议遵循了REST所强调的统一接口调用的原则,通过四大基本调用GET、POST、PUT、DELETE来完成对资源怎删改查的控制。
- 资源作为REST的数据抽象,需要对资源的粒度、资源使用评率,资源的处理、资源的控制等方面做出合理的评估来选择合适的方式去管理资源,例如什么地方用GET请求、什么地方用PUT请求等等。
- 资源表述的设计,在一般情况下我们都是采用JSON格式的数据来做资源表述的,但是在一些特殊情况下可能会用到XML或者是其他的方式来进行资源的表述。
- URL的设计,根据上面的介绍,对于服务器上的每个资源来讲,都有其唯一的URL,而对于URL的设计也是至关重要的,因为URL的设计有时候会直接反映应用资源的管理结构,例如/api/xxx/,/sys/xxx,等等分别表示就是API接口或者是系统接口。
- Web服务的稳定性与连通性,因为在很多场景中,我们REST服务都是通过HTTP协议通过网络进行调用,其中不但包含文本、有可能还会包含一些超媒体资源,这个时候,如何能够保证在调用的过程中这些资源的稳定以及能够快速响应,这也是我们在设计REST服务的时候需要去考虑的事情。
总结
设计RESTful web服务,核心是统一接口,目的是通过标准化的接口传输资源的表示,降低系统的开发复杂度,提升可见性,可靠性和可重用性。