HTTP 请求( Request)与 HTTP 动作 ( Verb)
一般网页的运作原理是这样的:
1.使用者在浏览器输入了某个网址,点击了某个连结。这都叫发出 HTTP 请求 ( Request)。
2.而浏览器回应之后:产生页面,或者是重新导向。这都叫 HTTP 回应( Response)。
一般来说,使用者最常使用的是两种类型 / 动作 ( Verb )的请求: GET 与 POST。
GET :输入网址,点击某些网址。这都是 GET。
POST:送出表单。这叫做 POST
HTTP 请求( Request)与 HTTP 动作 ( Verb)
因为 CRUD 是常见的操作行为,但是大家实作的方式、与网址设计方式不一样。造成很多维护上的困扰。
后来就有人发明 RESTful 这个概念,希望用 HTTP 的动作 ( Verb)一起去封装 CRUD 的行为。所以又多加了两个动作:
- PUT : 更新 ( update )
- DELETE : 删除 ( delete)
而 Rails 的 Routing 也是依循这样的理念去设计。
Rails 的基础 RESTful概念
由于RESTful是个新手不容易一下子理解的概念,号称学 Ruby on Rails 初期最大障碍。
在本篇尽量用浅显易懂的方式解释。如果看不懂也没关系,用背的!!
一定要背起来!
以下例子 做出 CRUD 功能的讨论版来解释:
- 讨论版这个功能的名称: groups。Restful 的概念里面叫做 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设定一行代码即可
网友评论