Я создал объект службы в 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
Есть ли хороший шаблон для обработки валидации и/или ошибки бросания для объектов службы?
Для валидаций:
- Мне нужно проверить все входы для нулевого или неправильного типа. Есть ли способ упростить проверку? Возможно, расширение рельсов?
Для ошибок:
- Я мог поймать все ошибки API, а затем безопасно вернуть нуль. Но программист, использующий служебный объект, может не знать значения nil.
- Я мог поймать ошибки API и поднять еще одну ошибку, что означает дополнительные усилия для этого во всех функциях.
- Третий вариант - оставить его как есть и позволить программисту обрабатывать все ошибки API.
Сообщите мне, знаете ли вы хороший образец или у вас есть идеи по интерфейсу API.