REST:Representational State Transfer,可译为“表现层状态转化”,HTTP是RESTful的典型常规应用。
API:Application Programming Interface,应用程序接口,以特定语言格式对外暴露的用于被外部程序访问和调用的程序功能接口,如RPC、SOAP、RESTful。
RESTful API:可表现层状态转化的应用程序接口。
RESTful是一种架构风格,最早被提出是在2000年,从其诞生之日开始,它就因其可扩展性和简单性受到越来越多的架构师和开发者们的青睐。
一方面,随着云计算和移动计算的兴起,许多企业愿意在互联网上共享自己的数据、功能;另一方面,在企业中,RESTful API也逐渐超越SOAP( RESTful之前的另一套API标准)成为实现SOA(面向服务架构)的重要手段之一。
时至今日,RESTful架构风格已成为企业级服务的标配。
资源(Resources)
在REST的名称“表现层状态转化”中,"表现层"指的是"资源"的"表现层"。
所谓“资源”,就是网络上的一个实体,或者说是网络上的一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的实在。一般用一个URI(统一资源定位符)指向它,每种资源对应一个特定的URI。要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地址或独一无二的识别符。
表现层(Representation)
“资源”是一种信息实体,把"资源"具体呈现出来的形式,叫做它的"表现层"(Representation)。
比如,文本可以用txt格式表现,也可以用HTML格式、XML格式、JSON格式表现,甚至可以采用二进制格式;图片可以用JPG格式表现,也可以用PNG格式表现。
状态转化(State Transfer)
客户端和服务器的交互过程会随着时间的过渡而发生状态转变,比如,连接的建立和释放就是一种状态的转变。
而HTTP协议是一个无状态协议,所有的状态都保存在服务器端。所以客户端想要操作服务器,必须通过某种方式,让服务器端发生状态转化。而这种转化是建立在表现层之上的,所以就是"表现层状态转化"。
在REST的定义中,客户端使用HTTP协议来对服务器端的资源进行基本操作,从而使得服务器端的资源发生状态转化。
RESTful架构综述
每一个URI代表一种资源实体
客户端和服务器之间,传递这种资源的某种表现层
客户端通过HTTP协议,对服务器端资源进行操作,实现"表现层状态转化"