1、获取body问题 超过1024
#使用ServerWebExchange exchange获取
exchange.getAttribute("cachedRequestBodyObject")
#配置
spring.cloud.gateway.routes[0].predicates[0].name = ReadBodyPredicateFactory
spring.cloud.gateway.routes[0].predicates[0].args.inClass = #{T(String)}
spring.cloud.gateway.routes[0].predicates[0].args.predicate = #{@openApiPredicate}
#开启 cachedRequestBodyObject 存储值
@Component
public class OpenApiPredicate implements Predicate {
@Override
public boolean test(Object o) {
return true;
}
}
2、自定义过滤器问题
1、如果 extends AbstractGatewayFilterFactory 这个类
例如 XxxxxGatewayFilterFactory extends AbstractGatewayFilterFactory
2、如果不是 extends AbstractGatewayFilterFactory 这个类
#例如 Xxxxx implements GatewayFilter, Ordered
#需要自定义 extends AbstractGatewayFilterFactory 实例化 Xxxxx
@Component
public class XxxxxGatewayFilterFactory extends AbstractGatewayFilterFactory {
@Override
public GatewayFilter apply(Object config) {
return new Xxxxx();
}
#或
#@Autowired
#private Xxxxx xxxxx;
#@Override
#public GatewayFilter apply(Object config) {
# return xxxxx;
#}
}
#配置如下(可以省略GatewayFilterFactory)
spring.cloud.gateway.routes[0].filters[0] = XxxxxGatewayFilterFactory或Xxxxx