Что является эквивалентом Spring Boot Webflux для библиотеки Morgan JS? - PullRequest
0 голосов
/ 13 февраля 2019

Javascript имеет удивительную библиотеку под названием morgan , которая регистрирует все входящие http-запросы.Интересно, есть ли в Java / Kotlin эквивалентная библиотека для регистрации запросов весенней загрузки webflux.

1 Ответ

0 голосов
/ 14 февраля 2019

Это то, что сработало для меня после просмотра этого репо

Я тоже всю ночь пытался получить тело запроса, но продолжал получать ошибки re: singleподписчик только за запрос.Это либо невозможно, чертовски сложно, либо не рекомендуется в случае запросов с большим телом (так как это может заблокировать ваш сервер).Поэтому я настоятельно рекомендую вместо этого преобразовать ваши @RequestBody объекты в @RequestParam параметры запроса, если вы хотите регистрировать переменные в почтовых запросах.

package com.example.demo

import org.slf4j.LoggerFactory
import org.springframework.stereotype.Component
import org.springframework.web.server.ServerWebExchange
import org.springframework.web.server.WebFilter
import org.springframework.web.server.WebFilterChain
import reactor.core.publisher.Mono


@Component
class LogFilter: WebFilter {

    private val logger = LoggerFactory.getLogger(LogFilter::class.java)

    override fun filter(exchange: ServerWebExchange, chain: WebFilterChain): Mono<Void> {
        val startTime = System.currentTimeMillis()
        val request = exchange.request
        val path = request.uri.path

        val requestPrintMap = mutableMapOf<Any, Any>()
        requestPrintMap["headers"] = request.headers
        requestPrintMap["uri"] = request.uri
        requestPrintMap["params"] = request.queryParams

        return chain
                .filter(exchange)
                .doAfterTerminate {

            logger.info("Served '{}' as {} in {} msec",
                    path,
                    exchange.response.statusCode,
                    System.currentTimeMillis() - startTime)
        }
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...