Как сохранить ответ API в базе данных в Micronaut? - PullRequest
0 голосов
/ 17 мая 2019

Моя главная цель - записывать все запросы и ответы в 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

Заранее спасибо!

...