как проверить тело запроса, если использовать @webfilter - PullRequest
0 голосов
/ 05 июля 2019

Я хочу проверить тело запроса с помощью @webfilter, но кажется, что тело запроса не может быть получено в @ webfliter, только после AbstractMessageReaderArgumentResolver.readBody.Тогда как я могу получить тело запроса в @webfliter?

DefaultServerWebExchange реализовал initFormData, я пробовал, но, кажется, не работает.

частный статический Mono> initFormData (запрос ServerHttpRequest, ServerCodecConfigurerconfigurer, String logPrefix) {

    try {
        MediaType contentType = request.getHeaders().getContentType();
        if (MediaType.APPLICATION_FORM_URLENCODED.isCompatibleWith(contentType)) {
            return ((HttpMessageReader<MultiValueMap<String, String>>) configurer.getReaders().stream()
                    .filter(reader -> reader.canRead(FORM_DATA_TYPE, MediaType.APPLICATION_FORM_URLENCODED))
                    .findFirst()
                    .orElseThrow(() -> new IllegalStateException("No form data HttpMessageReader.")))
                    .readMono(FORM_DATA_TYPE, request, Hints.from(Hints.LOG_PREFIX_HINT, logPrefix))
                    .switchIfEmpty(EMPTY_FORM_DATA)
                    .cache();
        }
    }
    catch (InvalidMediaTypeException ex) {
        // Ignore
    }
    return EMPTY_FORM_DATA;
}
...