Моя главная цель - записывать все запросы и ответы в MongoDB.
Для этого я добавил фильтр.
Ссылка на документацию Micronaut для того же: https://docs.micronaut.io/latest/guide/index.html#filters
@Filter("/**")
class EventAuditFilter implements HttpServerFilter {
@Inject
EventAuditService eventAuditService;
@Override
Publisher<MutableHttpResponse> doFilter(HttpRequest<?> request, ServerFilterChain chain) {
return eventAuditService.trace(request)
.switchMap({ aBoolean -> chain.proceed(request) })
.doOnNext({ res ->
String url = request.getPath()
String method = request.getMethod().toString()
String requestBody = ""
if (request.getBody().present) {
requestBody = request.getBody().get().toString()
}
Gson gson = new Gson()
String responseBody = ""
if (res.getBody().present) {
//Below line does not print actual response
responseBody = res.getBody().get().toString()
}
String status = res.getStatus().toString()
// String requestHeaders =gson.toJson(request.getHeaders().toList())
// String responseHeader = StringUtils.join(res.getHeaders().toList(),",")
return res
})
}
}
Над кодом успешно печатается запрос, но я не могу получить ответ на строку.
Я использую RxJava2 для потоковой передачи ответа.
Как правильно достичь этого?
Кроме того, я новичок в RxJava и Micronaut
Заранее спасибо!