我想通过使用@webfilter验证请求正文,但只能在AbstractMessageReaderArgumentResolver.readBody之后才能在@webfliter中获取请求正文。 那么我如何在@webfliter中获取请求正文?
DefaultServerWebExchange已实现initFormData,我尝试过,但似乎不起作用。
私有静态Mono> initFormData(ServerHttpRequest请求, ServerCodecConfigurer配置器,字符串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;
}