什么是宁静路由?

Posted

技术标签:

【中文标题】什么是宁静路由?【英文标题】:What is Restful Routing? 【发布时间】:2011-01-27 08:53:34 【问题描述】:

我熟悉 Ruby On Rails 的路由系统以及 Code Igniter 和 phpCake 如何路由事物,但除了拥有一个基于目录结构提供路由的集中位置之外,还有更多吗?像这样

controller/action/id/
Admin/editUser/22

【问题讨论】:

【参考方案1】:

基本前提是,它不是完全依赖 URL 来指示您要访问的网页(并且仅使用一种方法),而是 VERB 和 URL 的组合。

这样,当同一个 URL 与不同的动词(例如 GET、PUT、POST、DELETE)一起使用时,您会转到不同的页面。这使得 URL 更简洁、更短,并且特别适用于 CRUD 应用程序,大多数 Web 应用程序都是。

【讨论】:

【参考方案2】:

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 来为您填充表单)【参考方案3】:

整个宁静的一个重要部分是您应该使用不同的 HTTP 方法来表示不同的操作。

例如,在 Rails 中,如果您要将 HTTP Delete 发送到 /users/[id],则表示您要删除该用户。 HTTP Get 将检索用户的适当表示。 HTTP Put 可以更新或创建用户。

这些是一些示例,但由于 HTTP 中没有 RESTful API 的标准,因此并非在所有情况下都是正确的。

【讨论】:

【参考方案4】:

它将 HTTP VERBS + URL 映射到控制器中的特定操作

例子:

GET /users/1      

前往:

:controller => 'users', :action => 'show'

要查看完整的映射,请转到终端,然后输入:

rake routes

【讨论】:

【参考方案5】:

@edtsech 是正确的。我想在这里再补充一件事。

在更新的情况下,方法是“POST”,带有一个隐藏字段,其中包含需要更新的数据。

所以 PUT = POST + 隐藏字段。

【讨论】:

我不明白你在这里想说什么...... POST 肯定不是用来更新记录的......你所说的“隐藏字段”是指有效负载吗? 在 Rails 中,为了更新记录,我们使用带有隐藏字段的 POST 请求,其中包含有效负载。

以上是关于什么是宁静路由?的主要内容,如果未能解决你的问题,请参考以下文章

宁静的 Web 应用程序安全性

设计一个宁静的服务

宁静的网址。查看特定型号

宁静是一种生产力

如何让自己内心宁静平和?

民国时期的宁静致远四个字怎么写?