J'ai passé une journée à essayer plusieurs approches, mais pas tout à fait arrivé là donc décidé de demander maintenant ...Comment gérer les erreurs génériques avec une réponse JSON dans une application hybride (JSON API + HTML) Rails 5?
J'ai une application Rails 5 qui est principalement une API JSON (en utilisant les spécifications JSON API réelles), mais aussi une application Rails "normale" avec des e-mails transactionnels et des pages liées au compte (réinitialiser le mot de passe, etc.). Ce que je voudrais réaliser est que Rails renvoie toujours une réponse JSON avec une réponse d'erreur significative à tous les appels API, plutôt que la page d'erreur HTML par défaut ou une erreur d'en-tête seulement 400.
Les principaux cas que j'essaie de gérer sont les problèmes d'analyse JSON et les exceptions Ruby (500 erreurs).
J'ai essayé:
- utilisant
rescue_from
au niveauActionController
- semble le cadre gère ces exceptions avant atteindraient le contrôleur - leur manipulation au niveau du rack avec un middleware - cela a fonctionné dans le test mais pas dev malgré la mise en
consider_all_requests_local
-false
dans les deux - Enregistrement d'un nouveau type Mime et un analyseur comme JSON API Resources gem does it - semblait prometteur, mais le code de l'analyseur est jamais frappé
Je suis vraiment à ma fin de l'esprit, ce qui semblait si simple a fini par être trompeusement compliqué avec moi essayant de traquer où sont ces exceptions se traitées dans le cadre sans grand succès ...