我这个功能逻辑是这样的:在一个自定义的局部过滤器,通过getMultipartData()来解析请求中的文件和字符串变量后做一些业务逻辑,然后不继续走别的过滤器,直接返回。
但是我的这份代码问题在于:
请问这个现象是因为什么引起呢,或者啥关键词可以提示一下?我从凌晨三四点就开始考虑这个问题了,实在无能为力。 谢谢大家。
@Slf4j
@Component
public class FileFilterGatewayFilterFactory extends
AbstractGatewayFilterFactory{
public FileFilterGatewayFilterFactory() {
super(FileFilterGatewayFilterFactory.ParamsConfig.class);
}
@Override
public GatewayFilter apply(FileFilterGatewayFilterFactory.ParamsConfig config) {
return new OrderedGatewayFilter(((exchange, chain) -> {
parseBody(exchange).subscribe();
// 如果放行,可以触发 parseBody 里面的方法
return chain.filter(exchange);
// 如果不放行,parseBody 里面的方法根本不执行
return exchange.getResponse().setComplete();
}),10);
}
public Mono parseBody(@NotNull ServerWebExchange exchange) {
return exchange.getMultipartData().map(multipartData -> {
Map partMap = multipartData.toSingleValueMap();
Part file = partMap.get("file");
FormFieldPart bizName = (FormFieldPart) partMap.get("name");
return Result.buildSuccessResult("成功", null);
});
}