RESTful 架构理解
REST中的关键词:
1、资源
2、资源的表述
3、状态转移
资源:
"资源",可以是一段文本、一张图片、一首歌曲、一种操作。你可以用一个URI(统一资源定位符)指向它,每种资源对应一个特定的URI。要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地址或独一无二的识别符。
网站的访问,就是与网站一系列的"资源"互动,调用它的URI。
资源的表述
资源的表现形式称作资源的表述。
比如,文本既可以用txt格式表现,也可以用HTML格式、XML格式、JSON格式表现,甚至可以采用二进制格式;图片可以用JPG格式表现,也可以用PNG格式表现。虽然表现形式不同,但资源是相同的。
URI只代表资源的实体,不代表它的形式。严格地说,有些网址最后的".html"后缀名是不必要的,因为这个后缀名表示格式,属于"表现层"范畴,而URI应该只代表"资源"的位置。它的具体表现形式,应该在HTTP请求的头信息中用Accept和Content-Type字段指定,这两个字段才是对"资源的表述"的描述。
状态转移
访问一个网站时,浏览器必然会和服务端发生交互,而这个过程就会涉及到数据和状态的变化。(也就是对数据的操作。此处的状态我理解为对数据的操作方式,比如增删改查)
而HTTP协议是无状态的,所有的状态都保存在服务端。那么怎么改变服务端保存的状态呢?答案是:"状态转移",而这种转移是发生在资源的表述上的。
客户端使用HTTP协议中的四个表示操作方式的动词:GET、POST、PUT、DELETE。分别表示:GET获取资源,POST更新或新建资源,PUT更新资源,DELETE删除资源(后两种基本不用)
总结
什么是RESTful架构:
(1)每一个URI代表一种资源;
(2)客户端和服务器之间,传递这种资源的表述;
(3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现"资源表述的状态转移"。
REST风格的URI中不应该有动词
当显示一个用户信息时,可能的URL地址就是:http://xxx/show/user?id=1 或者 http://xxx/user/show?id=1
REST风格的URL地址则是:http://xxx/user/1,HTTP中的method就是GET了。
注意:一般的HTTP的method的put和delete不用,而是通过在REST风格的URI后添加 "/操作" 来实现状态转移。
REST是以资源为导向架构风格。