我正在使用 Grape 和 Rails 创建一个 REST API。我有基本的架构,我正在寻找“清理”东西的地方。这些地方之一是错误处理/处理。
我目前正在修复整个 API 的 root.rb(GRAPE::API 基类)文件中的错误。我格式化它们,然后通过 rack_response 发回错误。一切正常,但 root.rb 文件变得有点臃肿,所有错误都被挽救了,其中一些有特殊的解析需要完成。我想知道是否有人开发了一个很好的错误处理策略,以便可以将其移出到自己的模块中,并使 root.rb(GRAPE::API 基类)相当精简。
我真的很想创建一个错误处理模块并为每种类型的错误定义方法,例如......
module API
module ErrorHandler
def record_not_found
rack_response API::Utils::ApiErrors.new({type: e.class.name, message: 'Record not found'}).to_json, 404
end
end
end
然后在 root.rb 文件中做这样的事情
module API
class Root < Grape::API
prefix 'api'
format :json
helpers API::ErrorHandler
rescue_from ActiveRecord::RecordNotFound, with: :record_not_found # Use the helper method as the handler for this error
end
end
有没有人做过这样的事情?我一直在尝试上述策略的各种风格,但似乎没有任何效果。