Zuul 路由优先级高于 Spring Controllers

我的 api 网关服务中有控制器:

@GetMapping("/test")

我在我的一条路线中有相同的端点。

当我调用 /test 时,我的请求被路由,如何提高 Spring Controller 的优先级而不是 zuul 路由?


交互式爱情
浏览 249回答 2
2回答

茅侃侃

您可以使用在路径前面使用forward 向控制器添加路由,例如: zuul:  routes:    controller:      path: /test      url: forward:/test    other:      ...并将其放在您的其他路由定义之前,如果是 YAML 文件,它将保留一个订单。http://cloud.spring.io/spring-cloud-netflix/single/spring-cloud-netflix.html#_strangulation_patterns_and_local_forwards我没有测试过上面的例子,但我使用了一个类似的解决方案,它工作正常。

DIEA

您可以使用 BeanPostProcessor 来减少 ZuulHandlerMapping 的顺序。默认值为 -200@Configurationpublic class MvcConfig extends WebMvcConfigurerAdapter {    @Bean    public ZuulBeanPostProcessor postBean() {        return new ZuulBeanPostProcessor();    }     public static class ZuulBeanPostProcessor implements BeanPostProcessor {        @Override        public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {            return bean;        }        @Override        public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {            if (bean instanceof ZuulHandlerMapping) {                ((ZuulHandlerMapping) bean).setOrder(10);            }            return bean;        }    }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java