Ruby on Rails框架(3)-RESTful应用程序

前面,我们通过使用rails框架的相关命令,创建了一个标准的rails控制器,并且通过简单的路由配置信息和视图配置信息,在网站的首页上显示了一条简单的消息,让大家了解了rails框架中MVC设计模式的基本使用方式和基本工作流程,但相信在看过上次分享之后,但是有人可以还会有一些疑惑,比如说MVC设计模式中反复中反复提到的请求,它本质上到底是什么东西呢?为什么rails框架能够接受并且识别一个请求的内容,并且能够对其进行相应的处理,这种请求都有什么类型,它的工作方式是怎样的,这些问题可能还会存在疑问,那带着这些问题,我们将进入rails资源这一大的概念的学习,这个资源的概念,是rails中一个非常非常重要的内容,学习并理解好资源的概念,对rails的开发非常的重要

jacky首先要跟大家讲授REST的概念和RESTful的应用风格,因为这有助于理解rails框架中的资源,在本系列的开头,jacky说过:rails框架几个必须知道的内容,其中有一条是:“对于web应用来说,REST是最好的”,

(一) web应用的本质

  • web应用的本质就是给用户提供服务,用户通过访问我们的web应用来获取服务,这里用户获取的服务一般指获取信息;

  • 也可以这么说:web应用的本质就是:用户client与应用的服务server的交互过程;而这次分享,jacky要讲的rest,就是用来描述client用户与服务server交互方式的一个东西;

(二)REST与MVC的关系

  • REST与MVC是没有关系的,这里大家一定不要联想与混淆;

    • 在一个web 应用中,MVC用来定义应用的结构,而REST用来定义用户与服务的交互方式;

(三)REST

rest是一种软件架构风格,它的目标是创建可扩展的web服务,应用使用REST规范进行交互是可以提高应用的性能和可维护性

3.1 REST定义

rest不是一个单词,它是一组单词的缩写,rest直译过来就是资源的表现层状态转化。

  • 资源

  • 表现层

  • 状态转化

我们通过学习一个小例子,帮助理解rest

  • 我们上网的过程,就是上网访问资源,我们看某个人的博客,这里,博客就是一个资源;除此之外,还可以是歌曲,书籍等等内容,总之,资源就是网络上的一种实体,或者说是网络上的一种具体信息,只要能让用户获取的,都可以是信息,所以大家一定要抽象的理解这个事情;总结一下:资源,就是一种能让用户获取的信息。

  • 比如我们用户要访问博客的应用,那我们就要告诉web应用服务器,比如我们想要看这个私人博客的博客列表的第一个页,那我们的博客(web应用)返回了我们这个博客列表的第一页,显示在了你的屏幕上,那这个格式可以是txt文本模式,也可以是html这个网站格式,或者xml格式,甚至可以是图片、音频、视频,那这里返回的博客列表第一页的方式,就叫做表现层,也就是说表现层就可以理解为用户和服务器交互过程中服务器返回信息的方式;

  • 当我们看完第一页博客,要看第二页的时候,这时候问题就出现了,按照我们惯性思维,你看完了第一页,要看第二页的时候,这个时候我们可能会以为,我们告诉服务器我们要看下一页不就可以了吗?然后我们以此类推,我们再看下一页,就这样一页一页看下去?但是问题就在于,rest服务是一种无状态的服务;什么叫无状态呢?也就是说太不会保持当前是第几页的状态,因此你说你看下一页,服务器并不知道下一页是第几页,所以我们要将我们的请求改为:我要看博客列表的第二页,也就是说每次我们都要精确的告诉服务器,我们要获取资源的位置,只有这样,服务器才会把你的列表内容返还给你,也就是说用户想要操作服务器,就必须通过定位服务的资源的方式,再加上某种手段让服务的状态发生转化,那么这种转化就是建立在表现层的基础上的,所以就叫表现层的状态转化,上面的这个例子跟我们获取博客这个资源结合起来,就解释了“资源的表现层的状态转化”的过程。

3.2 用url 定位资源

在rest中,到底是如何实现上述的这些概念的呢?那我们用一句话来概括,就是用url 定位资源,使用http动作描述操作;

(1)url资源定位

  • 什么是url资源定位?

    • 一条url路径,它必须完整包含你要获取资源的准确位置;

用url已经标记我们要操作的资源,那接下来我们就要标记资源要操作的方式,我们是获取,还是删除,还是更新,那标明操作方式的动作,就需要我们http动作来描述;

(2)HTTP动作描述操作

  • get

  • post

  • delete

  • update

总结

  • 通过以上的分享,我们就能理解REST架构风格的内容,它就是定义用户与服务器之间一种交互方式的规范;就好像人与人之间交谈的语言一样,REST就是一种交互语言,那么相应的实现并且遵守这样交互规范形式,我们就叫它RESTful应用程序,或者叫REST风格的应用程序;

  • 那么,使用REST风格它的优势在哪儿呢?为什么rails框架会说,对于web框架来说,rest是最好的?

    • 首先,rest将资源最为web应用的核心内容,这样就容易设计出标准和统一的url书写风格,同时url 具有很强的可读性,并且具有自描述性;

    • 还有就是无状态的服务特性,它保证了系统的横向扩展能力,否则服务器就会随着保存状态的时间和复杂度而变得越来越臃肿,如果我们服务器要保存状态的话,1000个用户就要保存1000个状态,对服务器的压力是很大的;

    • 最后就是rest风格的应用程序,能够非常方便的跨平台使用,因为任何一种支持http请求的应用都可以与rest服务进行交互,因此它特别适用于多平台的应用程序开发,比如说我们使用苹果的操作系统和安卓相应的http的封装,都可以使用rest风格的应用服务,那它就避免了无谓的二次开发,提高了应用程序的开发效率。

你可能感兴趣的:(Ruby on Rails框架(3)-RESTful应用程序)