Я хочу проверить тело запроса с помощью @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;
}