RESTful Rails, 第一部分

转载 2013年12月04日 18:06:18

自从restful_rails插件被内置到rails以后, RESTful Rails就成了Rails核心里引起很多争议的一个部分。不过随着Rails2.0的改进,RESTful Rails成为了Rails里不可动摇的一部分。因此,了解Restful Rails是什么,它是如何工作的,什么时候用它,什么时候不用它,这些问题都变得重要起来。这个话题很大,我认为应该先给你们讲讲一些背景知识,所以我把这个帖子分成了两个部分--第一部分面向理论,第二部分面向实用。所以,带好安全帽,我带你去看看web语言的内部原理了!

REST vs. CRUD

web的世界里总是充满了缩略语。REST是REpresentational State Transfer 的缩写,描写了可供我们操作的资源(在这里就是URL)。CRUD是Create, Read, Update, Delete的缩写,表示我们能够做的操作。虽然在Rails里REST和CRUD是形影不离,但是他们也能够独立的工作。实际上,如果你写过一个可以从数据库里进行添加、编辑、删除条目的后台系统,和一个可以看到这些条目的前台,你就已经用过CRUD了。

HTTP 动词

每一个接触过表单数据的web开发者都很熟悉GET和POST方法。前者通过一个查询字符串,比如?key2=value2&key2=value2 ,向服务器提交数据。后者通过HTTP包头发送数据。可能你没有意识到,每次你打开一个页面的时候(如果那个页面不是一个Post表单),你就是在做一个get请求。所以当你在你的RSS阅读器里点击链接,打开网页的时候,你就是在做一个get请求。

还有两个动词你可能没有听说过,因为浏览器并不支持这两个动词:PUT和DELETE。delete动作很直白,就是指示服务器删除一个条目。PUT动作相对比较难猜到,它和POST一样,也是通过Http包头发送数据。但是它的功能是修改条目(如果这个条目不存在,它应该创建一个新条目,但是在Rails故意忽略了这一点)。

聪明的你可能已经意识到GET类似于READ,POST类似于CREATE,PUT类似与UPDATE,DELETE呢,就是DELETE。如果你意识到了,给自己一点掌声,因为这个类比关系正是RESTful Rails的工作方式。

每个人都知道如果打开一个并不存在的页面,服务器会返回一个404错误页面。如果你的Rails程序出错了,会返回一个500应用程序内部错误的页面。这些响应号是服务器用来返回给浏览器,告诉浏览器当前状态的。200到299表示请求成功,300到399表示请求ok,但是你需要做一些额外的事情,400-499表示错误,500-599表示非常严重的错误。就像那几个动词代表RESTful请求一样,这些响应码代表了对RESTful请求的响应。


200 OK
    GET、PUT和DELETE可能的返回值,表示请求已接受,操作已完成。
201 Created
    告诉你POST操作成功创建了一个条目.
404 Not found
    请求的资源不存在。GET, PUT 和DELETE都可能返回。
406 Not Acceptable
    这个资源不允许进行请求的操作(下半部分详细介绍)
500 Internal Server Error
    内部发生了较大的错误

Resources资源

你可能见过类似于/posts/view/2的Rails URL,大意是说让我看看id为2的post。RESTful资源和这个类似。RESTful资源有一个controller和(可能有)一个id。通常来说RESTful资源没有指定动作,而是使用标准的Http动词。

这个在rails里是如何实现的呢?在Controller里定义了一些方法来表示资源--在这里以Post为例 ( .xml 的后缀后半部分在解释).
Method     Resource     Verb     Explanation
index     /posts.xml     GET     返回所有条目
show     /posts/1.xml     GET     返回id = 1的条目
create     /posts.xml     POST     创建条目
update     /posts/1.xml     PUT     更新id = 1的条目
delete     /posts/1.xml     DELETE     删除id = 1的条目

实际操作的时候,你可以给自己定义额外的动作(不可能让每一个网站都强行套进标准模型),后半部分会说到。

好了,后半部分我们再看看如何创建一个RESTful rails工程以及相关的一些琐碎。不见不散……

RESTful.Rails.Development.2015.10.pdf

  • 2015年10月26日 12:24
  • 5.86MB
  • 下载

restful rails development

  • 2007年08月20日 09:43
  • 318KB
  • 下载

使用Rails restful方式的Session实现登陆机制

使用Rails提倡的restful的风格,通过建立session的mvc来实现网站的登入登出。
  • y_xiao_
  • y_xiao_
  • 2015年12月10日 21:26
  • 1091

刻意练习--Rails RESTful(一)

一本被人反复提及的书《哪儿来的天才》中说过,大部分所谓的天才都是通过反复的刻意练习得到的。当你的练习时间达到10000小时以后,你就会成为该领域的专家。 最近在学习rails如何实现RESTful...

Rails中的MVC流程与RESTful路由的流程总结

MVC的流程参见下列图片: 其处理流程如下: 瀏覽器發出HTTP request請求給Rails 路由(Routing)根據規則決定派往哪一個Controller的Action 負責處理...

Rails宝典之第一式: 实例变量做查询缓存

前段时间对Rails的跟进有点懈怠,因为公司让我做Spring的内部培训,便抽空回归Java,看了下字符集,字节码,Annotation,  JavaConfig,JavaScript,Perl,花...

跨越边界: 在集成框架中进行测试,第 1 部分(在 Ruby on Rails 中进行单元测试)

简介: Java ™ 社区在推进自动单元测试方面已经做了一项激动人心的工作。越来越多的开放源码框架支持在构建项目的同时构建自动测试套件。Spring framework、JUnit、TestNG 和其...

《应用Rails进行敏捷Web开发》第四版部分翻译-- 建立你的开发环境2

声明:本人现为大三学生,英语学得很烂,四级勉强过,所以翻译的许多不好的地方。本人也没有深入的学习rails,所以可能有错误,请读者酌情吸收。如果哪里翻译错误还请指出。 编辑器 我们写Rai...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:RESTful Rails, 第一部分
举报原因:
原因补充:

(最多只允许输入30个字)