アプリと API の間のインターフェイスとして機能するサービス オブジェクトを Rails で作成しました。
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
検証を処理したり、Service オブジェクトのエラーをスローしたりするための適切なパターンはありますか?
検証の場合:
- nil または間違った型のすべての入力をチェックする必要があります。簡単に検証する方法はありますか?おそらくレール拡張?
エラーの場合:
- すべての API エラーをキャッチして、安全に nil を返すことができました。しかし、サービス オブジェクトを使用するプログラマーは、nil の意味を知らない可能性があります。
- API エラーをキャッチして別のエラーを発生させることができました。これは、すべての関数でこれを行うための余分な労力を意味します。
- 3 番目のオプションは、そのままにして、API からのすべてのエラーをプログラマーに処理させることです。
良いパターンを知っているか、API をインターフェースするためのより良いアイデアがあれば教えてください。