Utworzono obiekt usługowy w Railsach, aby działał jako interfejs między naszą aplikacją a naszym API.sprawdzanie poprawności i obsługa błędów dla obiektów usługowych
wpadłem na pomysł z http://blog.codeclimate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord-models/
Oto mały przykład:
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
Czy istnieje jakiś dobry wzór do obsługi walidacji i/lub rzucanie błędy w obiekty usług?
Dla walidacji:
- muszę sprawdzić wszystkie wejścia do zera lub niewłaściwego typu. Czy istnieje sposób na łatwą walidację? Może rozszerzenie szyn?
Dla błędów:
- mogłem złapać wszystkie błędy API, a następnie bezpiecznie wrócić na zero. Ale programista używający obiektu usługi może nie znać znaczenia zer.
- Mogłem złapać błędy API i zgłosić inny błąd, co oznacza dodatkowy wysiłek, aby to zrobić we wszystkich funkcjach
- Trzecią opcją jest pozostawić tak, jak jest, i pozwolić programistowi obsłużyć wszystkie błędy z API.
Daj mi znać, jeśli znasz jakiś dobry wzór lub masz lepsze pomysły na interfejs API.
Dziękuję bardzo, oto rodzaj odpowiedzi, której szukałem! – ieldanr