我如何添加/ api到这些路线

时间:2015-02-08 04:01:24

标签: ruby-on-rails

所以我有很多可以通过localhost访问的路由:3000 / posts localhost:3000 / users

config / routes.rb看起来像这样

resources :posts do                                                                                                                                                                                             
    resources :comments, shallow: true do                                                                                                                                                                         
      delete :destroy_all, on: :collection                                                                                                                                                                        
    end                                                                                                                                                                                                           
    resources :images, shallow: true                                                                                                                                                                              
  end                                                                                                                                                                                                             

  resources :comments, only: [:new]                                                                                                                                                                               
  resources :users                                                                                                                                                                                                

  root 'welcome#index'

如何修改它以便我也可以正常访问它们以及API访问它们 http://localhost:3000/api/posts http://localhost:3000/api/users/new等等

1 个答案:

答案 0 :(得分:1)

如果您正在构建API,则应考虑进行版本控制,从而将JSON API与HTML界面分开;这意味着将JSON API拉出到版本化API命名空间中的单独控制器中。

namespace :api do  
  namespace :v1 do
    resources :posts do
      resource :comments, shallow: true do
        delete :destroy_all, on: collection
      end
    end

    resources :comments
    resources :users
  end
end

resources :posts do
  resource :comments, shallow: true do
    delete :destroy_all, on: collection
  end
end

resources :comments
resources :users

这些控制器将存在于app/controllers/api/v1

您的路线现在看起来像:

/api/v1/posts

对API进行版本控制被认为是一种很好的做法,因为您希望API保持一致。

在API版本控制方面有一个很棒的RailsCast:

http://railscasts.com/episodes/350-rest-api-versioning?view=asciicast