【发布时间】:2023-03-23 07:33:02
【问题描述】:
我在 Rails 中创建了一个服务对象,作为我们的应用程序和 API 之间的接口。
我的想法来自http://blog.codeclimate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord-models/
这是一个小例子:
class PackagesService
def self.get_package(package_id)
raise ArgumentError.new("package_id can't be nil") if package_id.blank?
package = API::get "/packages/#{package_id}"
package = JSON.parse package,
:symbolize_names => true unless package.blank?
end
end
是否有任何好的模式来处理服务对象的验证和/或抛出错误?
对于验证:
- 我必须检查所有输入是否为 nil 或类型错误。有什么方法可以轻松验证吗?也许是 Rails 扩展?
对于错误:
- 我可以捕获所有 API 错误,然后安全地返回 nil。但是使用服务对象的程序员可能不知道 nil 的含义。
- 我可以捕获 API 错误并引发另一个错误,这意味着在所有函数中都要付出额外的努力
- 第三个选项是保持原样,让程序员处理来自 API 的所有错误。
如果你知道任何好的模式或者你有更好的想法来接口 API,请告诉我。
【问题讨论】:
标签: ruby-on-rails validation interface error-handling soa