Ich benutze Grape und Rails, um eine REST API zu erstellen. Ich habe die grundlegende Architektur an Ort und Stelle und suche nach Orten, um Dinge zu "säubern". Einer dieser Orte ist die Fehlerbehandlung/-verarbeitung.Grape Fehlerbehandlung Strategie?
Ich rette derzeit Fehler in der Datei root.rb (GRAPE :: API-Basisklasse) für die gesamte API. Ich formatiere sie und sende den Fehler dann über rack_response zurück. Alles funktioniert, aber die root.rb-Datei wird ein wenig aufgebläht mit all den Fehlern, die gerettet werden, und einige von ihnen haben spezielle Parsing, die getan werden müssen. Ich habe mich gefragt, ob jemand eine gute Strategie für die Fehlerbehandlung entwickelt hat, damit er in sein eigenes Modul verschoben werden kann und die root.rb (GRAPE :: API-Basisklasse) ziemlich schlank bleibt.
Ich mag würde ein Fehlerverarbeitungsmodul erstellen und für jede Art von Fehlern Methoden definieren, zum Beispiel ...
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
Dann in der root.rb Datei tun so etwas wie dies
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
Hat jemand so etwas getan? Ich habe verschiedene Aromen der oben genannten Strategie versucht, aber ich kann nicht scheinen, etwas Arbeit zu bekommen.
Werfen Sie einen Blick [Hier] (https://github.com/intridea/grape/issues/177) scheint wie es war/ist eine Feature-Anfrage, aber scheint auch, wie Menschen haben eine Arbeit für jetzt gefunden. – engineersmnky
Nicht ganz dasselbe, nach dem ich gesucht habe, aber definitiv einige Ideen, über die man im Link nachdenken sollte. Vielen Dank. – mfunaro