Sto utilizzando Grape e Rails per creare un'API REST. Ho l'architettura di base in atto e sto cercando posti per "ripulire" le cose. Uno di questi posti è la gestione/elaborazione degli errori.Strategia di gestione dell'errore dell'uva?
Attualmente sto salvando gli errori nel file root.rb (GRAPE :: API base class) per l'intera API. Li formatto e poi rispedisco l'errore tramite rack_response. Tutto funziona, ma il file root.rb si sta gonfiando di tutti gli errori che vengono salvati e alcuni di essi hanno un'analisi speciale che deve essere eseguita. Mi stavo chiedendo se qualcuno ha sviluppato una buona strategia per la gestione degli errori in modo che possa essere spostato nel proprio modulo e lasciare la root.rb (classe base API GRAPE ::) abbastanza snella.
mi piacerebbe davvero per creare un modulo di elaborazione di errore e definire i metodi per ogni tipo di errore, per esempio ...
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
Poi nel file root.rb fare qualcosa di simile
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
Qualcuno ha fatto qualcosa del genere? Ho provato vari sapori della strategia di cui sopra, ma non riesco a far funzionare nulla.
Dai uno sguardo [qui] (https://github.com/intridea/grape/issues/177) sembra che fosse/è una richiesta di funzionalità ma sembra anche che le persone abbiano trovato un lavoro da fare per ora. – engineersmnky
Non proprio la stessa cosa che stavo cercando, ma sicuramente alcune idee a cui pensare nel collegamento. Grazie. – mfunaro