应用Rails进行REST 开发(一)

前言
        Http协议除了 get 和 post ,还可以做更多的事情,一直以来,很多的开发
人员都忘了这一点。

        但是,如果你知道浏览器其实只支持 get 和 post, 那么你就不会感到惊奇
了。

        get 和 post 是http请求从客户端传到服务器端的两个方法。除了这两个,
http协议还知道 put和delete 方法,这两个方法告诉服务器创建或者删除一个
WEB的资源。

        这个教程的目的,就是扩展开发人员的视线,去了解http协议的 put 和
delete 方法。我们常说的 REST 这个术语,精华就是 http 协议中 get, post,
put, delete 四个方法。Rails 从1.2版本开始,就支持 REST 这个技术了。
这个教程一开始会简短的介绍REST的背景和概念,接着介绍为什么要开发
REST风格的Rails应用。

        使用 scaffolding,这是可以帮助我们产生 controller 和 model 细节的工
具,对我们的进行REST应用的开发很有帮助。REST的应用中作用非常重大的路由
技术,将会在接下来的章节介绍。“嵌套的资源”这个章节,会介绍一下REST的
高级应用,告诉大家资源如何以 父 - 子(继承关系)的关系组合在一起,同时不
违反的REST 风格的路由设计。教程的后面,还会介绍一些REST的内容,AJAX,
REST风格的应用的测试方法,还有“ActiveResource”-- REST的客户端部分。

        在我们开始之前,再啰嗦最后一句:要读这个教程,最少你要懂一点Rails开
发的基本知识,否则的话,先去学习学习吧:)
什么是REST?

        REST这个术语,是Roy Fielding 在Ph.D.论文中提出来的,它的全称是
“Representational State Transfer.”

        REST描述了这么一个架构:利用标准的http 协议中的 get, post, put,
delete 来请求和操作网络上的资源。

        在REST中,资源的意思就是一个 基于URL实体,客户端可以通过 http协
议来和它进行交互。这个资源可以用各种形式来展示给客户端,如 HTML,XML,
RSS,主要依赖于客户端的调用方式。并不像以往的Rails开发那样,用REST方
式,一个 url 不是指定一个 model 或者 action, 一个 url 仅仅是资源的本身而
已。

        在图1.1中,三个资源的URL的开头都是相同的,通过后面的不同的数字
来保证这三个是不同的资源。

        注意:URL并没有表明要对这三个资源进行什么操作。

        Rails 应用中,一个资源是由 controller 和 model 组成的。那么从
技术的角度来看,图 1.1中的3个资源"project",就是针对3个请求,而表现出
来的 Project model(也就是ActiveRecord类了)的3个实例形式。

为什么使用REST

        REST所带给我们的,是Rails 的理论上的提升,下面的一些特性,将会使
我们清晰地了解这一点。

        a) 简明的Url. REST 风格的URL是为了定位一个资源,而并不是调用一
个action. 在REST中,URL经常以这种方式出现:先是controller的名称,然后
是资源的id。请求的操作隐藏在URL 里,并且通过 http 协议来表示(get, post,
put, delete 四个动作)。

        b) 传回给客户端不同格式的内容。我们通过一种方式来编写 controller,
其中的action应该都可以返回给客户端不同的格式的结果。对于同一个 action,
即可以返回给客户端 html, 也可以返回给xml,也可以返回给 RSS,这依赖于客户
端想要什么。REST应用就好像变得能处理客户端好多的命令。

        c) 更少的代码。因为一个action 可以返回客户端的各种需要格式,这就
减少了(DRY don’t repeat yourself),这也就让 controller 里的代码减少了。

        d) 面向 CRUD 的controller. 所谓CRUD 就是Create,Retrieve,Update,Delete.
controller 和 model 融合到一起,每个controller都会响应某个
model的操作。

        e) 让系统设计更简单。REST风格的开发方式,会使系统结构更加清晰,而
且容易维护。为什么使用REST?

新玩意
        如果你觉得 REST 让你之前所有的开发经验变得毫无作用,别担心,那是
不可能的~ 因为REST仍然是基于 MVC 风格的。从技术角度来看,REST中的“新
玩意”可以归纳为以下几点:

        a) 在 controller 中的 respond_to 的用法。

        b) 对于 link 和 form 的新的 helper 方法。

        c) 在 controller redirect 中的 url 方法。

        d) 在 routes.rb 文件中,新的路由定义方法。

好了,今天就到这了,明天以实例说明。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值