我正在使用 Rails 3 应用程序。我的应用程序的 ApplicationController(如过滤器之前)类中几乎没有重要的实现(如设置租户 ID、身份验证等)。现在,当我尝试使用 Grape 实现 API 时,我无法在 Grape 中重用 applicationController 逻辑。
Grape API 类是否可以继承 ApplicationController?以防万一,如果我在这里遗漏了什么,请教育我。
谢谢。
我正在使用 Rails 3 应用程序。我的应用程序的 ApplicationController(如过滤器之前)类中几乎没有重要的实现(如设置租户 ID、身份验证等)。现在,当我尝试使用 Grape 实现 API 时,我无法在 Grape 中重用 applicationController 逻辑。
Grape API 类是否可以继承 ApplicationController?以防万一,如果我在这里遗漏了什么,请教育我。
谢谢。
我不认为你可以让 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