Używam Grape i Rails do tworzenia REST API. Mam podstawową architekturę w miejscu i szukam miejsc, w których można "oczyścić" rzeczy. Jednym z tych miejsc jest obsługa/przetwarzanie błędów.Strategia obsługi błędów winogron?
Obecnie próbuję ratować błędy w pliku root.rb (GRAPE :: API base class) dla całego interfejsu API. Formatuję je, a następnie wysyłam błąd z powrotem przez rack_response. Wszystko działa, ale plik root.rb jest nieco nadęty, a wszystkie błędy są ratowane, a niektóre z nich wymagają specjalnej analizy. Zastanawiam się, czy ktoś opracował dobrą strategię obsługi błędów, aby można było przenieść ją do własnego modułu i pozostawić root.rb (GRAPE :: API base class) całkiem szczupłą.
Naprawdę chciałbym, aby utworzyć moduł przetwarzania błędów i definiować metody dla każdego typu błędu, na przykład ...
module API
module ErrorHandler
def record_not_found
rack_response API::Utils::ApiErrors.new({type: e.class.name, message: 'Record not found'}).to_json, 404
end
end
end
Następnie w pliku root.rb zrobić coś takiego
module API
class Root < Grape::API
prefix 'api'
format :json
helpers API::ErrorHandler
rescue_from ActiveRecord::RecordNotFound, with: :record_not_found # Use the helper method as the handler for this error
end
end
Czy ktoś zrobił coś takiego? Próbowałem różnych smaków powyższej strategii, ale wydaje mi się, że nic nie działa.
Spójrz [tutaj] (https://github.com/intridea/grape/issues/177) wygląda na to, że było/jest prośbą o funkcję, ale wygląda na to, że ludzie znaleźli pracę na teraz. – engineersmnky
Nie całkiem to samo, czego szukałem, ale z pewnością kilka pomysłów do przemyślenia w linku. Dzięki. – mfunaro