Đầu tiên:nho: Rescue từ JSON không hợp lệ
Tôi đang sử dụng nho để xây dựng API của tôi (Rails 4). Khi ai đó đang gửi một cơ quan JSON không hợp lệ (ví dụ quên ngoái }
), các lỗi sau được nâng lên:
ActionDispatch::ParamsParser::ParseError (795: unexpected token at '{"foobar": 1234
')
Tôi đã thử nó với nho rescue_from :all
tùy chọn, nhưng điều này không hoạt động. Bên trong stacktrace, tôi không thấy đá quý nho tham gia. Có vẻ như rằng lỗi này được ném từ 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'
Nhưng điều gì sẽ là cách tốt nhất để đón những sai sót, trở lại một 400: Bad Request
lỗi, và bao gồm các unexpected token at '{"foobar": 1234
nhắn bên trong phản ứng json?
Thứ hai:
Tôi cố gắng để kiểm tra điều này với RSpec, nhưng không có bất kỳ may mắn về việc gửi một yêu cầu nguyên với JSON không hợp lệ. Tôi đã thử nó với
post "/my_route", '{some invalid json'
nhưng điều này không ném lỗi từ trên cao. Tôi nghĩ rằng kể từ Rails 4, tham số thứ hai, được truyền như một chuỗi, được xử lý như cơ thể thô?
Tôi nghĩ bạn nên xem xét tách câu hỏi này thành hai câu hỏi ... –