【问题标题】:Differentiate Restful routes and non-restful routes区分 Restful 路由和 non-restful 路由
【发布时间】:2015-07-03 10:47:39
【问题描述】:

据我所知,restful 路由是基于 REST 架构的路由。默认情况下,rails 使用 restful 路由。 resource 关键字为我们定义了七条宁静的路线。如果我必须定义自定义路线,

resource :photos do
 memeber do
  get 'preview' #non-restful route
 end
end

现在preview 路由被定义为非静态路由。不是 RESTful 路由吗?

我的问题是,我们如何区分 RESTful 路由和非 RESTful 路由?你能举一个自定义的宁静路线和非宁静路线的例子吗?

【问题讨论】:

  • 这是自定义路由,不是non-restful
  • 所以它是自定义的restful 路由?
  • REST 指的是一组架构指南,而不是固定的规则。如果您认为preview 本身就是一种资源,那么是的,它就是restful。但是,如果您将preview 视为一个动作,那么它就不是restful

标签: ruby-on-rails rest routes


【解决方案1】:

虽然 Rails 为您提供了一个名为 resources 的方法来生成 Restful Web 服务,但定义 Restful Web 服务并没有硬性规定。但这取决于场景。

你可以看看A Beginner’s Guide to HTTP and REST。它深入描述了一个请求如何落入一个 Restful 请求的类别中。

【讨论】:

    【解决方案2】:

    在许多应用程序中,您还会看到非 RESTful 路由,它将 URL 的各个部分显式连接到特定操作。例如,

    map.connect 'parts/:number', :controller => 'inventory', :action => 'show'
    

    另一方面,当您在应用程序的route.rb 中指定路由时使用resourcesresource 时,您将获得它们的RESTful URL,例如:

    map.resources :photos
    

    将产生:

    Verb     URL          controller    action  used for
    GET      /photos        Photos      index   display a list of all photos
    GET      /photos/new    Photos      new     return an HTML form for creating a new photo
    POST     /photos        Photos      create  create a new photo
    GET      /photos/1      Photos      show    display a specific photo
    GET      /photos/1/edit Photos      edit    return an HTML form for editing a photo
    PUT      /photos/1      Photos      update  update a specific photo
    DELETE   /photos/1      Photos      destroy delete a specific photo
    

    来源:Ruby on rails - Routing

    【讨论】:

      猜你喜欢
      • 2016-05-05
      • 2014-03-08
      • 1970-01-01
      • 2014-10-17
      • 1970-01-01
      • 2013-05-22
      • 2012-04-08
      • 2017-02-20
      • 2015-06-09
      相关资源
      最近更新 更多