Ниже перечислены побочные эффекты и методы преобразования:

у иметь централизованное ведение журнала запросов и ответов в моем REST API на Spring WebFlux с Kotlin. До сих пор я пробовал этот подход

@Bean
fun apiRouter() = router {
    (accept(MediaType.APPLICATION_JSON) and "/api").nest {
        "/user".nest {
            GET("/", userHandler::listUsers)
            POST("/{userId}", userHandler::updateUser)
        }
    }
}.filter { request, next ->
    logger.info { "Processing request $request with body ${request.bodyToMono<String>()}" }
    next.handle(request).doOnSuccess { logger.info { "Handling with response $it" } }
}

Здесь запрос метода и путь журнала успешно, но телоMonoтак как мне это регистрировать? Должно ли это быть наоборот, и я должен подписаться на тело запросаMono и войти в систему в обратном вызове? Другая проблема заключается в том, чтоServerResponse Интерфейс здесь не имеет доступа к телу ответа. Как я могу получить это здесь?

Другой подход, который я пробовал, используетWebFilter

@Bean
fun loggingFilter(): WebFilter =
        WebFilter { exchange, chain ->
            val request = exchange.request
            logger.info { "Processing request method=${request.method} path=${request.path.pathWithinApplication()} params=[${request.queryParams}] body=[${request.body}]"  }

            val result = chain.filter(exchange)

            logger.info { "Handling with response ${exchange.response}" }

            return@WebFilter result
        }

Та же проблема здесь: тело запросаFlux и нет тела ответа.

Есть ли способ получить полный запрос и ответ на вход в систему из некоторых фильтров? Что я не понимаю?

Ответы на вопрос(1)

Ваш ответ на вопрос