Primo:Uva: Salvataggio da JSON valido
sto usando uva per costruire il mio API (Rails 4). Quando qualcuno sta inviando un corpo di JSON valido (per esempio dimenticato l'ultimo }
), il seguente errore viene generato:
ActionDispatch::ParamsParser::ParseError (795: unexpected token at '{"foobar": 1234
')
ho provato con l'uva rescue_from :all
opzione, ma questo non funziona. All'interno dello stacktrace, non vedo la gemma dell'uva coinvolta. Sembra che questo errore viene generato da actionpack:
.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'
Ma quale sarebbe il modo migliore per catturare quegli errori, restituire un 400: Bad Request
errori, e includere il messaggio unexpected token at '{"foobar": 1234
all'interno della risposta JSON?
Secondo:
Ho provato a testare questo con RSpec, ma non ha avuto fortuna su inviando una richiesta greggio avente un JSON valido. Ho provato con
post "/my_route", '{some invalid json'
ma questo non genera l'errore dall'alto. Ho pensato che dal momento che Rails 4, il secondo parametro, passato come una stringa, è trattato come il corpo grezzo?
Credo che si dovrebbe considerare che separa questa domanda in due domande ... –