我如何在具有不同方法的资源之上创建 restful api 来获得 return 不同的结果?
How do I create a restful api on top of a resource that has different methods to return different results?
我有这个资源
class Role < ActiveRecord::Base
# lists all the system-level roles
def Role.system_roles
Role.find_all_by_system(true, :order => 'name')
end
# lists all the project-level roles
def Role.project_roles
Role.find_all_by_system(false, :order => 'name')
end
# lists all roles that can be used for workflow enforcement
def Role.filter_roles
not_for_filters = ['admin', 'manager']
Role.project_roles.reject{|role| not_for_filters.include? role.name}
end
end
现在 REST API 标准规定您必须 return 以这种方式获取资源
/roles
就是这样。
嗯,在控制器的索引方法中,我只做了这个
module Api::V1::Setup
class RolesController < ApplicationController
include ApiHelper
layout nil
def index
system_roles_data = Role.system_roles
render :json => roles_data, :status => :ok
end
end
end
我看到其他帖子建议,嗯,传入一个参数。我不想那样做。可以支持以下吗?
/roles/system_roles
/roles/project_roles
路由文件中应该包含什么?
如果您在 roles_controller.rb
(system_roles
和 project_roles
)中创建相应的方法,您可能会有这样的东西:
resources :roles do
collection do
get 'system_roles'
get 'project_roles'
end
end
system_roles
控制器方法将 return Role.system_roles
和 project_roles
将分别 return Role.project_roles
。
我有这个资源
class Role < ActiveRecord::Base
# lists all the system-level roles
def Role.system_roles
Role.find_all_by_system(true, :order => 'name')
end
# lists all the project-level roles
def Role.project_roles
Role.find_all_by_system(false, :order => 'name')
end
# lists all roles that can be used for workflow enforcement
def Role.filter_roles
not_for_filters = ['admin', 'manager']
Role.project_roles.reject{|role| not_for_filters.include? role.name}
end
end
现在 REST API 标准规定您必须 return 以这种方式获取资源
/roles
就是这样。
嗯,在控制器的索引方法中,我只做了这个
module Api::V1::Setup
class RolesController < ApplicationController
include ApiHelper
layout nil
def index
system_roles_data = Role.system_roles
render :json => roles_data, :status => :ok
end
end
end
我看到其他帖子建议,嗯,传入一个参数。我不想那样做。可以支持以下吗?
/roles/system_roles
/roles/project_roles
路由文件中应该包含什么?
如果您在 roles_controller.rb
(system_roles
和 project_roles
)中创建相应的方法,您可能会有这样的东西:
resources :roles do
collection do
get 'system_roles'
get 'project_roles'
end
end
system_roles
控制器方法将 return Role.system_roles
和 project_roles
将分别 return Role.project_roles
。