【问题标题】:What is Restful Routing?什么是宁静路由?
【发布时间】: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


    【解决方案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 请求,其中包含有效负载。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多