Spring cloud 根据请求url或路由服务id处理筛选器的优雅方式
我需要确定请求的API是否应该由特定的过滤器过滤Spring cloud 根据请求url或路由服务id处理筛选器的优雅方式,spring-cloud,netflix-zuul,Spring Cloud,Netflix Zuul,我需要确定请求的API是否应该由特定的过滤器过滤 常识是用斜线分割请求url以获得准确的接口,然后将其与url列表预设进行比较,还有其他方法吗?您可以在过滤器中使用RequestContext中的serviceId属性,并在过滤器的shouldFilter()方法中检查它,类似于下面的方法。如果您的过滤器是prefilter,则其过滤器顺序的值必须大于predecorationfilter的值。目前是5 @Override public int filterOrder() { retur
常识是用斜线分割请求url以获得准确的接口,然后将其与url列表预设进行比较,还有其他方法吗?您可以在过滤器中使用
RequestContext
中的serviceId
属性,并在过滤器的shouldFilter()
方法中检查它,类似于下面的方法。如果您的过滤器是pre
filter,则其过滤器顺序的值必须大于predecorationfilter
的值。目前是5
@Override
public int filterOrder() {
return 10;
}
@Override
public boolean shouldFilter() {
RequestContext ctx = RequestContext.getCurrentContext();
if ((ctx.get("serviceId") != null) && ctx.get("serviceId").equals("service_id_that_you_want_to_handle")) {
return true;
}
return false;
}
您应该知道的一件事是,如果您指定的是url本身而不是使用eureka,那么您应该在
RequestContext
中使用proxy
属性,而不是serviceId
,我不知道proxy
,但是您应该使用RequestContext.getRouteHost()
用于完整url的方法,而不是serviceId
。