12

アプリと 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 をインターフェースするためのより良いアイデアがあれば教えてください。

4

1 に答える 1