Как записать JSON или XML-запрос в базу данных или файл журнала перед обработкой в ​​Spring при помощи аннотации @Requestbody - PullRequest
0 голосов
/ 16 декабря 2018

Как записать JSON или XML-запрос в базу данных или файл журнала перед обработкой в ​​Spring, используя аннотацию @RequestBody?

С помощью какого класса я могу выполнить это?

Или любая ссылка будет полезной.

Ответы [ 2 ]

0 голосов
/ 16 декабря 2018

Чтобы регистрировать полезные нагрузки запросов, вы можете использовать предоставляемый Spring фильтр CommonsRequestLoggingFilter.

Добавить следующий bean-компонент в конфигурацию Spring-Boot и изменить уровень журнала пакета org.springframework.web.filter на DEBUG .

@Bean
public CommonsRequestLoggingFilter requestLoggingFilter() {
    CommonsRequestLoggingFilter rlFilter = new CommonsRequestLoggingFilter();
    rlFilter.setIncludePayload(true);
    return rlFilter;
}

Кроме того, Spring Boot предоставляет конечную точку привода (/ activator / httptrace) для регистрации HTTP-запросов из коробки.Проверьте ссылку ниже для получения более подробной информации по этому вопросу:

Пружинный привод привода

0 голосов
/ 16 декабря 2018

Вы можете использовать подход фильтра (CommonsRequestLoggingFilter класс) или код ниже с пользовательской реализацией

@Component
public class AppRequestInterceptor extends HandlerInterceptorAdapter {

    @Override
    public boolean preHandle(
      HttpServletRequest request, 
      HttpServletResponse response, 
      Object handler) {
        HttpServletRequest requestCacheWrapperObject = new ContentCachingRequestWrapper(request);
        //your implementation
        //sample method you can use: requestCacheWrapperObject.getParameterMap(); requestCacheWrapperObject.getContentAsByteArray();
        return true;
    }

    @Override
    public void afterCompletion(
      HttpServletRequest request, 
      HttpServletResponse response, 
      Object handler, 
      Exception ex) {
       //your implementation
    }
}


@Configuration
public class AppMVCConfig implements WebMvcConfigurer {

    @Autowired
    private AppRequestInterceptor appRequestInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(appRequestInterceptor)
          .addPathPatterns("/**");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...