Rails 的 CRUD 与 RESTful

HTTP 请求( Request)与 HTTP 动作 ( Verb)


一般网页的运作原理是这样的:

  1. 使用者在浏览器输入了某个网址,点击了某个连结。这都叫发出 HTTP 请求 ( Request)。
  2. 而浏览器回应之后:产生页面,或者是重新导向。这都叫 HTTP 回应( Response)。

一般来说,使用者最常使用的是两种类型 / 动作 ( Verb )的请求: GET 与 POST。

  • GET :输入网址,点击某些网址。这都是 GET。
  • POST:送出表单。这叫做 POST

RESTful 的基础概念


因为 CRUD 是常见的操作行为,但是大家实作的方式、与网址设计方式不一样。造成很多维护上的困扰。
后来就有人发明 RESTful 这个概念,希望用 HTTP 的动作 ( Verb)一起去封装 CRUD 的行为。所以又多加了两个动作:

  • PUT : 更新 ( update )
  • DELETE : 删除 ( delete)

而 Rails 的 Routing 也是依循这样的理念去设计。

Rails 的 CRUD 与 RESTful_第1张图片
image.png

Rails 的基础 RESTful概念


由于RESTful是个新手不容易一下子理解的概念,号称学 Ruby on Rails 初期最大障碍。
在本篇尽量用浅显易懂的方式解释。如果看不懂也没关系,用背的!!
一定要背起来!

Rails 的 CRUD 与 RESTful_第2张图片
image.png

以下例子以 第三章, 做出 CRUD 功能的讨论版来解释:


  • 讨论版有个群组叫: groups。在 Restful 的概念里把这个 groups 叫做 resources,“一组资源”的意思。

为了要控制它的运作,我们会创建一个新的 Controller文件 叫做 groups_controller.rb
HTTP Verb 有四种:

  • 新增 (create,使用 POST )
  • 读取 (read,使用 GET )
  • 更新 (update,使用 PUT )
  • 删除 (destroy,使用 DELETE)

在这组 controller 当中,我们会实作 7 个 Action ,4 张页面。

  • 首页( index ):用来列出所有的讨论版,可以选择-各个单版 (使用 GET )
  • 各个讨论版专属页面(show):显示讨论版版名跟简介 (使用 GET )
  • 新增页面(new):里面会有表单,填完以后可以送出 (使用 GET )
  • 产生数据(create) :new 送出来的表单到 create 这个 action,新增一笔数据 ( 使用 POST )
  • 编辑页面(edit):里面会有表单呈现现有数据来,填完数据后可以送出 (使用 GET )
  • 更新数据(update):edit 送出来的表单可以到 update 这个 action,更新该笔数据 (使用 PUT )
  • 删除数据:送出删除请求,删除该笔数据(使用 DELETE)

这七个 action ,是每个CRUD功能里最基本的动作。只要我们在 controller.rb 里定义 (def) 好这七个方法当作动作 (action)。其他的部分 Rails 就会帮我们处理了。
像是设定 Routing (路由) 只需要简单一行:

config/routes.rb

resources :groups
这样不管浏览器端跑来什么样的请求 (request) ,Routing都会聪明地帮我们导向正确的 action 去运作后续流程。

网址对应关系


对于网址跟对应的Action与页面来说

  • /groups/ 一定就是 index,首页,对应Routes路径: groups_path
  • /groups/123 一定就是 show,名字为123的讨论版个版页面,对应Routes路径: group_path(123)
  • /groups/123/edit 一定就是 edit,编辑讨论版123的表单页面,对应Routes路径:edit_group_path(123)
  • /groups/new 一定就是 new,新增讨论版的表单页面,对应Routes路径(或称为helper):new_group_path

总结


所以制作一个 RESTful 风格的讨论版,我们仅需在Routes设定一行代码即可

你可能感兴趣的:(Rails 的 CRUD 与 RESTful)