问题
spring gateway 报错如下:
java.lang.IllegalArgumentException: Required attribute ‘org.springframework.cloud.gateway.support.ServerWebExchangeUtils.gatewayRequestUrl’ is missing.
这是我在gateway filter里面 写的如下代码报的错
URI requestUrl = exchange.getRequiredAttribute(GATEWAY_REQUEST_URL_ATTR);
解决办法:
变更filter的order变为大于10000的值。
@Override
public int getOrder() {
return 10001; //这里要在 RouteToRequestUrlFilter 之后执行,才可以获得路由之后的路径
}
原因:
首先参考 spring cloud gateway 的全局过滤器
全局filter细品
这个里面 的 RouteToRequestUrlFilter 的作用,就是把转发之后的地址,写到了GATEWAY_REQUEST_URL_ATTR
这个参数里。所以如果你的过滤器order值比这个小,你是获取不到这个里面的内容的,所以报错。