簡體   English   中英

如何在具有不同方法以返回不同結果的資源之上創建一個寧靜的api?

[英]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.rbsystem_rolesproject_roles )中創建相應的方法,則可能會發生以下情況:

resources :roles do
  collection do
    get 'system_roles'
    get 'project_roles'
  end
end

system_roles控制器方法將分別返回Role.system_rolesproject_roles將返回Role.project_roles

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM