Erstens:Grape: Rettung von ungültiger JSON
ich Traube bin mit meiner API für den Bau (Rails 4). Wenn jemand einen ungültigen JSON Körper sendet (z die letzte }
vergessen haben), wird der folgende Fehler ausgelöst:
ActionDispatch::ParamsParser::ParseError (795: unexpected token at '{"foobar": 1234
')
Ich versuchte es mit Trauben rescue_from :all
Option, aber das funktioniert nicht. Im Inneren des Stacktrace sehe ich den Traubenstein nicht. Es scheint, dass dieser Fehler von Action geworfen wird:
.gems/gems/actionpack-4.1.4/lib/action_dispatch/middleware/params_parser.rb:53:in `rescue in parse_formatted_parameters'
.gems/gems/actionpack-4.1.4/lib/action_dispatch/middleware/params_parser.rb:32:in `parse_formatted_parameters'
.gems/gems/actionpack-4.1.4/lib/action_dispatch/middleware/params_parser.rb:23:in `call'
Aber was wäre der beste Weg, um die Fehler, Rückkehr einen 400: Bad Request
Fehler abzufangen, und schließt die unexpected token at '{"foobar": 1234
Mitteilung innerhalb der json Antwort?
Zweitens:
Ich versuchte dies mit RSpec zu testen, aber hatte kein Glück eine rohe Anforderung mit einer ungültigen JSON auf Senden. Ich versuchte es mit
, aber dies wirft nicht den Fehler von oben. Ich dachte seit Rails 4, der zweite Parameter, der als String übergeben wird, wird wie der rohe Körper behandelt?
Ich glaube, Sie sollten prüfen, zu trennen, diese Frage in zwei Fragen ... –