0

我正在使用 Rails 3 应用程序。我的应用程序的 ApplicationController(如过滤器之前)类中几乎没有重要的实现(如设置租户 ID、身份验证等)。现在,当我尝试使用 Grape 实现 API 时,我无法在 Grape 中重用 applicationController 逻辑。

Grape API 类是否可以继承 ApplicationController?以防万一,如果我在这里遗漏了什么,请教育我。

谢谢。

4

1 回答 1

0

我不认为你可以让 Rails 控制器继承自Grape::API. 你可以做的是:创建你自己的基础 API 类,继承Grape::API并实现必要的方法来模仿你的ApplicationController.

Grape::API 提供了一些回调钩子,因此您可以在基础 api 类中设置它们,例如(未测试):

class MyAPI < Grape::API
  before do
    authenticate!
  end

  helpers do
    def current_user
      @current_user ||= User.authorize!(env)
    end

    def authenticate!
      error!('401 Unauthorized', 401) unless current_user
    end
  end
end

class ProductAPI < MyAPI
  # Your code here
end
于 2014-09-30T12:12:58.693 回答