2016-01-27 3 views
0

Я хочу иметь следующий поток:Изменение JSON Тело в перехватчик

Request -> 1) Подтвердить JSON Body -> 2) Проверка JSON для соображений безопасности -> ... и т.д.

и бросьте исключения/дать соответствующие ответы JSON в 1) или 2).

Я попытался использовать перехватчики и фильтры.

Фильтры: я могу модифицировать тело с помощью Wrapper запроса, а затем передать его по цепочке в JSON Validation, однако, когда я делаю исключения, они не перехватываются обработчиком исключений @ControllerAdvice, который работает для всего остального. Из того, что я прочитал, это по дизайну ...? Кроме того, я попытался установить ответ вручную, пример ниже, но, кажется, весна загрузки изменяет код состояния 405.

response.getWriter().write("{\"test\" : \"test\""); 
response.sendError(400); 

перехватчики: Я получаю сообщение об ошибке, потому что я читаю тело более чем один раз, я могу не видеть, как установить пользовательский HttpServletRequestWrapper, который я сделал до, перехватчики запускаются.

Я получаю способ реализации этого сценария.

Любая помощь была бы принята с благодарностью. Благодаря!

ответ

0

Я понял, что, поскольку фильтры сначала запускаются, я могу изменить запрос с помощью Wrapper запроса. Затем я использую перехватчик для запуска проверок безопасности и json.

Я все равно хотел бы знать, как изменять ответы в фильтре, хотя мне не нравится, как весенняя загрузка изменит его, даже если у вас уже есть код ответа.

Смежные вопросы