【发布时间】:2011-01-27 08:53:34
【问题描述】:
我熟悉 Ruby On Rails 的路由系统以及 Code Igniter 和 PhpCake 如何路由事物,但除了拥有一个基于目录结构提供路由的集中位置之外,还有更多吗?像这样
controller/action/id/
Admin/editUser/22
【问题讨论】:
标签: ruby-on-rails model-view-controller rest
我熟悉 Ruby On Rails 的路由系统以及 Code Igniter 和 PhpCake 如何路由事物,但除了拥有一个基于目录结构提供路由的集中位置之外,还有更多吗?像这样
controller/action/id/
Admin/editUser/22
【问题讨论】:
标签: ruby-on-rails model-view-controller rest
基本前提是,它不是完全依赖 URL 来指示您要访问的网页(并且仅使用一种方法),而是 VERB 和 URL 的组合。
这样,当同一个 URL 与不同的动词(例如 GET、PUT、POST、DELETE)一起使用时,您会转到不同的页面。这使得 URL 更简洁、更短,并且特别适用于 CRUD 应用程序,大多数 Web 应用程序都是。
【讨论】:
RESTful Rails 路由,我认为这说明了 REST 的原理
/users/ method="GET" # :controller => 'users', :action => 'index'
/users/1 method="GET" # :controller => 'users', :action => 'show'
/users/new method="GET" # :controller => 'users', :action => 'new'
/users/ method="POST" # :controller => 'users', :action => 'create'
/users/1/edit method="GET" # :controller => 'users', :action => 'edit'
/users/1 method="PUT" # :controller => 'users', :action => 'update'
/users/1 method="DELETE" # :controller => 'users', :action => 'destroy'
【讨论】:
/users/new 和 /users/1/edit 不是 REST URI(因为其中包含动词)。也就是说,您可以将“功能页面”作为可以“获取”的资源,即/users/tools/creation_form 和/users/tools/edit_form/1(请注意,在第二个 URI 中,我添加了一个用户 ID 来为您填充表单)
整个宁静的一个重要部分是您应该使用不同的 HTTP 方法来表示不同的操作。
例如,在 Rails 中,如果您要将 HTTP Delete 发送到 /users/[id],则表示您要删除该用户。 HTTP Get 将检索用户的适当表示。 HTTP Put 可以更新或创建用户。
这些是一些示例,但由于 HTTP 中没有 RESTful API 的标准,因此并非在所有情况下都是正确的。
【讨论】:
它将 HTTP VERBS + URL 映射到控制器中的特定操作
例子:
GET /users/1
前往:
:controller => 'users', :action => 'show'
要查看完整的映射,请转到终端,然后输入:
rake routes
【讨论】:
@edtsech 是正确的。我想在这里再补充一件事。
在更新的情况下,方法是“POST”,带有一个隐藏字段,其中包含需要更新的数据。
所以 PUT = POST + 隐藏字段。
【讨论】: