У нас есть веб-сервис Restaasy.Resteasy PostProcessInterceptor после ResteasyJacksonProvider
Я использую провайдер Jackson для JSON, как исходящий JSON в ответ, так и входящий JSON в запросе.
Возможно ли, чтобы послепроцессорный приемник выполнялся после сериализации JSON-Jackson?
My PostProcessInterceptor должен изменить содержимое JSON для каждого исходящего ответа. Но когда PostProcessInterceptor выполняется, если я печатаю объект response.getEntity().toString();
, я вижу метод toString объекта java.lang.Object, а не строку JSON. Это потому, что объект еще не был сериализован Джексоном.
Можно ли сериализовать с помощью Resteasy/Jackson до с использованием PostProcessInterceptor?
Я также попытался использовать аннотацию @Precedence
на моем PostProcessInterceptor. Но это не работает, даже используя приоритет «DECODER» (который является последним).
Любая идея? Заранее спасибо.
Я ищу перехватчик, который обрабатывает все ответы исходящего тела (а не входящий запрос), возможно ли это с помощью CDI Interceptor? Я сейчас читаю документацию, это то, что вы мне предлагаете? http://docs.jboss.org/weld/reference/1.1.5.Final/en-US/html/interceptors.html – thermz
Если вас интересует объект ответа, прежде чем он будет сериализован Resteasy, тогда да. Измените это и последующий JSON. Вы можете просто получить context.proceed() ответ Object и бросить его (yikes!) Или уловить исходящие исключения. Если вам нужно увидеть окончательный результат после того, как все обработчики исключений выполнили свои задания и внесут изменения в фактическую строку JSON, вы можете попробовать MessageBodyWriterInterceptor. Не сделал этого сам, так что это просто осознанное предположение. – garbelini
Правильно, я сказал: «Можно ли запустить PostProcessInterceptor после сериализации JSON-Jackson?» Поэтому меня интересует строка JSON в теле ответа, а не объект. Итак, ваше предложение - MessageBodyWriterInterceptor. Кажется хорошим решением, я дам вам знать! – thermz