[英]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標准規定您必須以這種方式返回資源
/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
控制器方法將分別返回Role.system_roles
和project_roles
將返回Role.project_roles
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.