4--RESTful应用程序

Rails资源是一个重要的概念,对于掌握rails有很大帮助。

REST的概念和RESTful应用程序的风格。

MVC用来定义应用的结构,REST则用来定义用户与应用之间的交互方式(就是定义了交互的一种规范)。

REST概念:资源的表现层状态转化,关键词:资源、表现层、状态转化。

资源:用户能够获取的信息都叫资源,我们上网浏览的信息都是资源。

以访问博客为例:

用户请求访问博客列表第一页,服务器接收请求并响应,返回第一页的内容到屏幕上,返回的内容可以是html格式也可以是xml、txt甚至可以是图片、音频或者视频等等,服务器返回内容的格式就是表现层。

那么我们要访问下一页就告诉服务器这个请求,问题来了:REST是一种无状态服务,什么叫无状态呢?也就是服务器不会保存当前处于第几页的状态,因此你说看下一页服务器并不知道下一页是第几页。所以要将请求改为我要看博客的第二页或者第三页,要资源的具体位置而不是下一页,只有这样,服务器才会把资源的列表内容返回给你。也就说用户想操作服务器,就必须通过URL定位服务的资源,让后通过某种手段让服务的状态发生转换,这种状态转换时建立在表现层的基础上,所以叫做表现层的状态转换。

那么REST是如何实现上面那些过程呢?一句话概括就是通过URL定位资源和HTTP动作描述操作。

URL定位资源:就是一条完整的URL路径,必须包含你要获取资源的准确位置。如上图,回答了下面两个问题:

如我们要访问123这个网站下的一首歌曲,歌名叫123

如我们要访问123这个网站下的所有歌曲,那么这个URL该怎么定位呢?

URL定位了要操作的资源,那么还要定义资源操作的方式:获取还是修改还是删除还是更新等等,那么标明操作方式的动作就需要HTTP动作(获取就是GET,提交就是POST。。。)来描述。

服务器通过URL定位资源知道了你要访问的是songs下的abc这首歌,通过HTTP动作描述知道了你要访问资源的方式是GET也就是获取,那么服务器就完整地知道了你的请求的内容,就会返回给你相应的信息完成这次请求。

REST严禁在URL中加入HTTP动词,比如上面不能在abc 后面加上参数比如get等,REST要求操作方式一定不能显现在URL中而是应该出现在HTTP的请求中。

实现并遵循REST规范的应用程序,我们就叫它RESTful应用程序或者叫REST风格的应用程序。

使用REST风格优势:

标准化URL,你一看到URL就知道要访问的资源是什么,如上就知道是访问一首名为123的歌。

服务器是无状态的,保证了服务器的横向拓展性强,你就想想,比如服务器需要保存状态的话,1000个用户就要保存1000个状态对服务器压力是很大的。

最后是跨平台,任何一种支持HTTP协议的应用程序都可以与RESTful应用程序进行交互,比如安卓和苹果你都可以只用一种REST风格进行开发,这样就一次开发多平台使用。

Rails就是一种完全符合REST风格的RESTful应用程序。

posted @ 2016-02-16 13:56  SixEvilDragon  阅读(386)  评论(0编辑  收藏  举报